내가 C 프로그래밍에 새로운 오전을 사용하여 프로그램을 실행. 나는 fork()
, exec()
및 waitpid()
명령을 사용하여 사용자가 지정한 경로에 의해 주어진 프로그램을 실행하려합니다. 나는 이것을 몇 시간 동안 올바르게 실행 시키려고 노력하고 있으며 오류가 계속 발생하여 문제 해결 방법을 모르겠다. 한 가지 오류를 해결하자마자 새로운 문제가 발생한다. 내 구현이 왜 원활하게 작동하지 않는지 이해할 수 있는지 궁금합니다. 당신이 바꾼 것을 가지고있는 것처럼는 포크와 간부
많은 감사
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void) {
char command1[256], command2[256], path[556];
printf("# ");
scanf("%s", command1);
scanf("%s", command2);
scanf("%s", path);
if(strcmp(command1,"quit")==0)
exit(0);
else if(strcmp(command1, "run")==0 && strcmp(command2, "command")==0){
printf("%s", path);
pid_t process;
process = fork();
//fork error
if (process < 0){
perror("fork");
exit(0);
}
else if (process > 0){ //this is the parent process
execl(path, "sh" , "-c", ":ls -l *.c", 0);
}
else {//this is the child process
waitpid(process); //waits until the program terminates
}
}
return 0;
}
그리고 오류 메시지는 무엇인가? –
1 '#INCLUDE''#INCLUDE '와 '#INCLUDE '다음 '을 된 pid_t는 waitpid (된 pid_t의 PID, INT * 상태 INT 옵션)'. 2.'waitpid'는 자식 프로세스가 종료 될 때까지 대기하므로 자식 프로세스에서'exec'을 수행하고 부모 프로세스에서 기다려야합니다. –
@DanielFischer, 1 단계를 수행하면 해당 파일이나 디렉토리가 없다는 오류가 표시됩니다. – AnchovyLegend