안녕하세요, 유닉스 쉘에서 일하고 있는데 두 가지 문제가 있습니다. 당신 중 누구라도 나를 도울 수 있는지 궁금 해서요. 내 첫번째 문제는 쉘이 자식 프로세스가 종료되기를 기다리지 않는다는 것이다. 자식 프로세스가 실행되는 동안 실제로 더 많은 명령을 입력 할 수 있습니다. 내 두 번째 문제는 다음 두 줄에 있습니다. 나는 쉘에 어떤 디스플레이도 얻지 못하고있다. I는 명령을 실행 호출하는 곳, 즉 파이어 폭스, LS -a 등execv, wait, 유닉스 프로그래밍, 아이를 기다리는 법
void execute(char *command[], char *file, int descriptor){
pid_t pid;
pid = fork();
if(pid == -1){
printf("error in execute has occurred\n");
}
if(pid == 0){
execvp(*command,command);
fprintf(stderr, "Process name is: %s\n", commandArgv[0]);
fprintf(stderr, "Child pid = %d\n", pid);
wait(&status);
exit(EXIT_SUCCESS);
}
else{
printf("ignore for now\n");
}
}
:
fprintf(stderr, "Process name is: %s\n", commandArgv[0]);
fprintf(stderr, "Child pid = %d\n", pid);
는 I는 사용자가 입력하는 처리를 실행하기 위해 이하의 방법이있다. 그것은 잘 작동하고 프로세스를 시작하지만, 그것이 끝날 때까지 기다리지 않습니다.
execute(commandArgv, "STANDARD",0);
내가 뭘 잘못하고 있는지 알겠습니까? 감사합니다. 언제든지 도와 주시면 감사하겠습니다.
실행 호출 후 대기 이동되었습니다. 그것은 잘 작동했다. 고맙습니다. – user69514
또는 자식을 fork() 한 후에 부모가 실행하는 코드의 "지금 무시"부분으로 이동하십시오. –