Linux多进程03-进程创建
一个进程创建了新的进程, 这个新进程即为子进程,子进程还可以再创建子进程,形成进程数结构
fork函数
#include <sys/types.h>
#include <unistd.h>
pid_t fork(void);
作用: 用于创建子进程
返回:
返回两次,一次在父进程中,一次在子进程中
父进程中返回创建的子进程ID,子进程中返回0,通过fork的返回值区分父进程和子进程
在父进程中返回-1,表示创建子进程失败,并且设置errno
失败的两个主要原因:
1. 当前系统的进程数已经达到了系统规定的上限,这时 errno 的值被设置为 EAGAIN
2. 系统内存不足,这时 errno 的值被设置为 ENOMEM
示例代码:
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main(int argc, char const *argv[])
{
//创建子进程
pid_t pid = fork();
//判断是父进程还是子进程
if (pid > 0)
{
printf("pid: %d\n", pid);
printf("i am a parent process, pid: %d, ppid: %d\n", getpid(), getppid());
}
else if (pid == 0)
printf("i am a child process, pid: %d, ppid: %d\n", getpid(), getppid());
for (int i = 0; i < 3; i++)
{
printf("i : %d, pid: %d\n", i+1,getpid());
sleep(1);
}
return 0;
}
运行
pid: 4935
i am a parent process, pid: 4934, ppid: 4915
i : 1, pid: 4934
i am a child process, pid: 4935, ppid: 4934
i : 1, pid: 4935
i : 2, pid: 4934
i : 2, pid: 4935
i : 3, pid: 4934
i : 3, pid: 4935
本文作者:言叶以上
本文链接:https://www.cnblogs.com/anqwjoe/p/17409717.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2018-05-17 Vue.js 基础知识