C:使用waitpid&的'run'命令命令行输入

时间:2014-02-20 01:58:30

标签: c waitpid

我正在尝试编写一个函数作为我的代码的一部分,以便用户可以键入

shell> run date     //Line of user input
Mon Jan 19 11:51:57 EST 2009  //Printed by program
shell: process 348 exited normally with status 0

用户只需键入“运行日期”,程序就会显示底部的两行。 到目前为止,这就是我的功能。

 else if(strcmp(argv[1],"run") == 0 ) {
           if ((pid = fork()) < 0) {  //Child process fork
                    perror("fork");       
                    exit(1);
                    }   
            //printf("ok");
            if (pid == 0) {  //Child executes code
                    execvp(argv[2], &argv[2]); 
                    exit(1);
                    }

    waitpid(atoi(argv[2]), &status, WNOHANG);

    printf("shell: run status is %d\n", status);
    }

这还没有产生,但我想知道到目前为止这是否正确,如果我错过了一个重要的部分!谢谢。

1 个答案:

答案 0 :(得分:4)

waitpid的第一个参数应该是孩子的PID。另请注意,WNOHANG选项可防止调用进程被阻止;因此,如果预期进程的状态信息不可用,waitpid将返回0。如果您想等到孩子终止,请使用0作为waitpid的第三个参数(或使用wait代替waitpid)。