Linux fork函数功能,linux系统进程分析之fork函数

[C] 纯文本查看 复制代码#include

#include

#include

#include

#include

// 1.perror 这个是显示错误码的 在shell 中使用 perror 100 显示错误码

//

// 2. fork 特点

// 一次调用两次返回

// fork 是一个系统调用在Linux内核中完成

// 是在每一个进程各自的进程空间中返回

//

// 为什么父进程和子进程的返回值不一样

// 父子的关系是一对N的关系, 老爹找儿子的pid比较难

//

// fork 理解角度: 就是两个进程同时往下运行

//

// 为什么子函数选择从fork 之后运行 , 而不是 main 函数开始运行呢?

// 这个和fork函数的机制有关

// 写时复制, 子进程要拷贝父进程的代码段 数据段 堆栈段 PCB进程控制块

// PCB进程控制块就是linux内核管理进程的数据结构 task_struct

// 因为孩子拷贝了父进程的运行场景, 所以child就没有必要再看一遍了

// 这个时候资源已经复制了, 没要在重新开始运行

int main(void)

{

pid_t pid;

printf("before fork pid = %d\n", getpid());

pid = fork();

if (pid == -1)

{

perror("fork err");

return -1;

}

else if (pid == 0)

{

printf("child: %d\n", getpid());

}

else if (pid > 0)

{

printf("parent: %d\n", getpid());

}

printf("after fork\n");

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值