2013-10-20 3 views
0

execvp 및 fork에 문제가 있습니다. 코드를 실행할 때 파일을 만들 때 exec가 작동하지 않습니다. 단순히 "잘못된 주소"오류를 반환합니다. 또한 printf ("in the child")는 실행할 때 나타나지 않습니다. "내 자식"을 인쇄하지 않고 내 코드를 execvp로 가져올 수 있습니까?C에서 fork, execvp 오류가 있습니까?

 pid = fork(); 
    switch(pid) { 
    case -1: 
     fprintf(stderr,"ERROR WITH FORK\n"); 
     exit(1); 
     break; 

    case 0: 
     printf("in the child"); 
     fd = open(filename,O_CREAT | O_APPEND,0777); 
     if(dup2(fd,1) < 0) 
     { 
      fprintf(stderr,"dup error: %s",strerror(errno)); 
     } 

     if(execvp(command,args) == -1) //is null terminated 
     { 
      fprintf(stderr,"exec error %s\n",strerror(errno)); 
     } 

     break; 

    default: 
     wait(NULL); 
     break; 
+0

버퍼링, 플러시 등. 개행을 추가하십시오. –

+0

나는 당신이 무슨 말을하는지 이해하지 못합니다. 파일이 생성되면 파일 이름 문자열이 올바르게 형식화 된 경우 null이됩니다. 내 코드를 작동시키는 개행이 필요한 부분은 어디입니까? 무슨 완충제에 대해서 말하는거야? – user2900984

+0

'printf'의 버퍼. 출력을 보려면 \ n "'자식에서 인쇄하십시오. –

답변

0

포인터 배열 (execvp() 두 번째 인수)는 NULL 포인터로 끝나야한다. args 끝에 0 또는 NULL을 추가하십시오.