fork中的错误,execvp在C?

时间:2013-10-20 20:28:28

标签: c shell execvp

我遇到了execvp和fork的问题。当我运行代码时,即使创建文件,exec也不起作用。它只是返回“错误地址”错误。此外,我运行时不会出现printf(“在孩子中”)。如果不打印“在孩子身上”,我的代码如何获得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;

1 个答案:

答案 0 :(得分:0)

指针数组(execvp()中的第二个参数)必须由NULL指针终止。在0末尾添加NULLargs