Comment passer des arguments de ligne de commande de programme C utilisant execlp

Je suis en train d'utiliser execlp dans un programme c pour exécuter un autre programme c. La fonction exec ne appeler le programme, mais il ne passe pas les arguments entiers correctement. Mon exec appel:

int exec_arg_1, exec_arg_2;

if(pid == 0){
    printf("Repeat Number: %d, Process Number: %d\n", exec_arg_1, exec_arg_2);
    execlp( "/home/drlight/Desktop/asp/Assignment_3/philosopher.o", 
       "philosopher.o", &exec_arg_1, &exec_arg_2, NULL );
           printf("Exec didn't work...\n");
    }

Je attribuer des valeurs à la exec_arg entiers, et de les imprimer à droite avant de s'assurer qu'ils sont corrects, mais le philosophe.o la fonction se contente de lire les 0 à partir de l'emplacement. Si je suis philosophe.o à partir de la ligne de commande, il lit les arguments normalement.

  • Pourquoi ne pas simplement avoir un coup d'oeil à la page de man pour execlp pour voir quels types d'arguments qu'il faut? Vous appelez à un comportement indéterminé.
  • Il suffit de comprendre que Unix/Linux, les développeurs ne peuvent manipuler du texte. Donné une représentation binaire d'un entier, leur cerveau exploser.
  • J'ai essayé en passant des tableaux de char, mais le même problème se produit. Aussi, je pensais que les entiers et les chars étaient interchangeables dans la plupart des situations en C. je n'ai pas tout les avertissements du compilateur.
  • Non, les entiers et les caractères ne sont en général pas interchangeables. Vous avez besoin de convertir l'entier args dans les cordes et de transmettre ces chaînes en execlp. snprintf peut vous aider à convertir les entiers dans les chaînes et d'écrire dans une mémoire tampon.
InformationsquelleAutor Spence123 | 2016-02-21