你有几个问题。首先,如果只想运行两个程序,则只需调用
fork()一次。然后在父进程中运行一个程序,在子进程中运行一个程序。其次,您正在构造
argv要
execv错误地传递给的数组。第一个条目应该是可执行文件名称。做类似的事情:
#include <stdio.h>#include <unistd.h>#include <sys/types.h>int main(int argc, char **argv){ pid_t i = fork(); if (i == 0) { execv("./prcs1", (char *[]){ "./prcs1", argv[1], NULL }); _exit(1); } else if (i > 0) { execv("./prcs2", (char *[]){ "./prcs2", argv[0], NULL }); _exit(2); } else { perror("fork failed"); _exit(3); }}请注意,此示例不进行错误检查。



