/ / как да се съхранява execvp резултата в char масив като низ - c, linux, shell, exec, execvp

как да съхранявате execvp резултата в char масив като низ - c, linux, shell, exec, execvp

Ако потребител напишете "ls" execvp показва резултата от "ls" на екрана. Бих искал да запазя това в масив като низ. Може ли някой да ми помогне? Благодаря предварително.

int main () {
char response[1000];
char *buffer[100];
int pid, status;
printf("Please enter the shell command:  ");
scanf("%s",&response);
pid = fork();
if (pid < 0) {
printf("Unable to create child process, exiting.n");
exit(0);
}
if (pid == 0) {
printf("I"m the child.n");
*buffer = response;
execvp(*buffer,buffer);
printf("execvp failedn");
}

else{
wait(&status);
exit(0);
}
}

Отговори:

2 за отговор № 1

popen() е по-подходяща за вашата цел execvp() тъй като искате да прочетете изхода от изпълнената команда (вижте свързаното ръководство за пример).

   #include <stdio.h>

FILE *popen(const char *command, const char *type);

int pclose(FILE *stream);

popen() се завръща FILE * чрез което можете да прочетете изхода, върнат от командата.