Comment utiliser execvp()
L'utilisateur de lire une ligne et je vais conserver le premier mot comme une commande pour execvp.
Permet de dire qu'il sera de type "chat file.txt" ... commande d'un chat . Mais je ne suis pas sûr de savoir comment utiliser cette execvp()
, j'ai lu quelques tutoriels mais encore n'a pas l'obtenir.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *buf;
char command[32];
char name[32];
char *pointer;
char line[80];
printf(">");
while((buf = readline(""))!=NULL){
if (strcmp(buf,"exit")==0)
break;
if(buf[0]!=NULL)
add_history(buf);
pointer = strtok(buf, " ");
if(pointer != NULL){
strcpy(command, pointer);
}
pid_t pid;
int status;
if ((pid = fork()) < 0) {
printf("*** ERROR: forking child process failed\n");
exit(1);
}
else if (pid == 0) {
if (execvp(command, buf) < 0) {
printf("*** ERROR: exec failed\n");
exit(1);
}
}
else
while (wait(&status) != pid)
;
free(buf);
printf(">");
}///end While
return 0;
}
Que voulez-vous dire que vous n'avez pas l'obtenir? Veuillez être plus précis.
Je ne sais pas quels sont les arguments, j'ai besoin de passer en execvp.
Je ne sais pas quels sont les arguments, j'ai besoin de passer en execvp.
OriginalL'auteur Axl | 2014-12-18
Vous devez vous connecter pour publier un commentaire.
Le premier argument est le fichier que vous souhaitez exécuter, et le deuxième argument est un tableau de null chaînes de caractères qui représentent les arguments appropriés, comme spécifié dans la page de man.
Par exemple:
pas sûr de ce que vous demandez. Est-il une autre question?
Je crois que je vois maintenant que vous tentez de faire un shell, je suppose? Il suffit d'écrire une fonction qui coupe la corde APRÈS avoir pris toutes en tant que saisie de l'utilisateur. Donc, si l'utilisateur tape "ls-la", écrire une fonction qui prend qui, divise la corde en fonction de l'espace et définit ensuite cmd = split[0], argv[0] = split[0], argv[1] = split[2], argv[3] = NULL de façon appropriée. Est-ce que c'est?
Fonctionne très bien ! Merci!!!!
Qu'une petite correction typographique pour char pointeur sur le tableau d'initialisation: la ligne 1 doit être : char *cmd = "ls";
OriginalL'auteur Ricky Mutschlechner