Jeśli użytkownik wpisze „ls” execvp wyświetli na ekranie wynik „ls”. Chciałbym przechowywać to w tablicy znaków jako ciąg. Czy ktoś może mi pomóc? Z góry dziękuję.
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);
}
}
Odpowiedzi:
2 dla odpowiedzi № 1popen()
jest bardziej odpowiedni dla twojego celu niż execvp()
ponieważ chcesz odczytać dane wyjściowe z komendy exec (ed (patrz przykład w połączonej instrukcji).
#include <stdio.h>
FILE *popen(const char *command, const char *type);
int pclose(FILE *stream);
popen()
zwraca FILE *
za pomocą którego można odczytać dane wyjściowe zwrócone przez polecenie.