#include
#include
pid_t fork(void); //创建子进程
返回值:
-1: 函数调用失败,创建子进程失败,且设置errno
0 : 在子进程中
>0: 在父进程中,且返回值为创建的子进程的进程号
fork作用创建子进程,子进程和父进程并行执行
fork创建的子进程和父进程执行顺序不定
子进程的执行是从fork的下一条语句开始执行,直到子进程退出为止
当父进程死亡后,子进程成为孤儿进程,然后会被收养
当fork创建子进程时,子进程几乎完全拷贝了父进程的空间,子进程与父进程空间独立
#include
#include
#include
int main(int argc, char *argv[])
{
pid_t pid = fork();
if (pid < 0)
{
perror("fork");
return -1;
}
else if (0 == pid) //child
{
printf("child: pid=%d ppid=%d\n", getpid(), getppid());
}
else //parent
{
sleep(1);
printf("parent: cpid=%d, pid=%d\n", pid, getpid());
}
return 0;
}