/*
* simple fork usage
*/
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
pid_t child;
if ((child = fork()) == -1)
{
perror("fork");
exit(EXIT_FAILURE);
}
else if(child == 0)
{
puts("in child");
printf ("\tchild pid = %d\n", getpid());
printf ("\tchild ppid = %d\n", getppid());
exit(EXIT_SUCCESS);
}
else
{
puts("in parent");
printf ("\tparent pid = %d\n", getpid());
printf ("\tparent ppid = %d\n", getppid());
}
return (EXIT_SUCCESS);
}
-----------------------------------------------
第一次运行结果如下:
in parent
in childparent pid = 4836
parent ppid = 4835
child pid = 4837
child ppid = 4836
----------------------------------------------
第二次运行结果变这样了:
in parent
parent pid = 4855
in child
parent ppid = 4854
child pid = 4856
child ppid = 4855
使用fork时, 夫进程和子进程的运行顺序是随机的,也就是说他的执行是异步的。