#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main(void)
{ int i;
int n = 4;
pid_t childpid;
for (i=1; i<n; i++)
{
if ((childpid = fork()) == 0) // 子进程 从fork()处开始执行
break;
if (childpid > 0)
sleep(1); //让父进程阻塞1秒
}
fprintf(stderr, "This is process %ld with parent %ld\n", (long)getpid(), (long)getppid());
return 0;
}
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
int main(int argc, char *argv[])
{ pid_t childpid;
int status;
if ((childpid = fork()) == -1)
{ //fork出错
perror("The fork failed");
exit(-1);
}
else if (childpid == 0)
{ //子进程
if (execl("./hello","hello",NULL) < 0)
{ //子进程执行另一个程序hello
perror("The exec of command failed");
exit(-1);
}
}
else if(childpid>0)
{ //父进程
pid_t apid = wait(&status); //父进程调用wait等待子进程
printf("parent process has wait the %ld child process exit\n",apid);
exit(0);
}
}