fork函数 fork : 创建一个子进程
如果创建失败 返回 -1
成功返回两个值,如果是在父进程中,返回子进程的ID
如果创建失败 返回 -1
成功返回两个值,如果是在父进程中,返回子进程的ID
如果是在子进程,返回值是0
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main()
{
pid_t pid = fork();
if (pid == -1)
{
perror ("fork");
return -1;
}
if (pid > 0) // 父进程
{
printf ("我是父进程,pid = %d\n", getpid());
}
else if (pid == 0) // 子进程
{
printf ("我是子进程,pid = %d\n", getpid());
}
while (1);
return 0;
}
vfork函数
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
// 1、vfork 的子进程必须要显示调用 exit();
// 2、vfork 子进程和父进程共享数据段
// 3、vfork 的子进程先于父进程执行,子进程执行完,CPU才能调度到父进程
int main()
{
int count = 0;
pid_t pid = vfork();
if (pid < 0)
{
perror("vfork");
return -1;
}
count++;
if (pid > 0) // 父进程
{
printf ("我是父进程,pid = %d count = %d\n", getpid(), count);
}
else if (pid == 0) // 子进程
{
printf ("我是子进程,pid = %d count = %d\n", getpid(), count);
while (1);
exit(0);
}
return 0;
}