0

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

1 回答 1

0

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

于 2014-04-23T17:32:35.513 回答