Linux中的fork()函数

Linux使用clone()系统调用来实现fork()。fork(), vfork()和__clone()都是通过特定参数调用clone(),进而调用do_fork()创建新进程。在do_fork()中,copy_process()创建进程副本,复制task_struct并初始化,设置进程状态,更新权限标志,获取PID,并根据clone()参数共享或复制资源。最后,父进程和子进程平分时间片。" 77745204,5723847,Qt中update()与repaint()的区别解析,"['Qt开发', 'GUI编程', '图形界面', '事件处理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    Linux通过clone()系统调用实现fork()。这个调用通过一系列的参数标志来指明父、子进程需要共享的资源。fork()、vfork()和__clone()库函数都根据各自需要的参数标志去调用clone()。然后由clone()去调用do_fork()。

   do_fork()完成了创建中的大部分工作,他的定义在kernel/fork.c文件中。该函数调用copy_process()函数,然后让进程开始运行。copy_process()函数完成的工作很有意思:

  • 调用dup_task_struct()为新进程创建一个内核栈、thread_info结构和task_struct,这些值与当前进程的值相同。此时,子进程和父进程的描述符完全相同的。
  • 检查创新的这个子进程后,当前用户拥有的进程数目没有超出给他分配的资源的限制。
  • 现在,子进程着手使自己与父进程区别开来。进程描述符内的许多成员都要被清0或设为初始值。进程描述符的成员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道亦无名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值