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

ポインターの配列 ( の 2 番目の引数execvp()) は、ポインターで終了する必要がありNULLます。0またはNULLの最後に追加しargsます。

于 2014-04-23T17:32:35.513 に答える