2013-02-08 4 views
0

내가 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; 

} 
+0

그리고 오류 메시지는 무엇인가? –

+1

1 '#INCLUDE ''#INCLUDE '와 '#INCLUDE '다음 '을 된 pid_t는 waitpid (된 pid_t의 PID, INT * 상태 INT 옵션)'. 2.'waitpid'는 자식 프로세스가 종료 될 때까지 대기하므로 자식 프로세스에서'exec'을 수행하고 부모 프로세스에서 기다려야합니다. –

+0

@DanielFischer, 1 단계를 수행하면 해당 파일이나 디렉토리가 없다는 오류가 표시됩니다. – AnchovyLegend

답변

2

그것은 나에게 보인다. fork/exec를 사용하면 일반적으로 하위 프로세스에서 exec를 수행하고 상위 프로세스에서 waitpid를 수행합니다.

+0

답장을 보내 주셔서 감사합니다. 스와핑 후, 나는 여전히 '_fork에 대한 정의되지 않은 참조'라는 'Linker Error'오류가 발생합니다. – AnchovyLegend

+0

@MHZ 어떤 OS를 사용하고 계십니까? – melpomene

+0

나는 윈도우 7 – AnchovyLegend