复制进程fork与替换进程exec

本文介绍了进程复制中的fork函数,阐述了其工作原理和返回值情况,以及如何处理僵死进程。此外,讨论了写时拷贝的概念及其作用,并提到了进程控制块(PCB)的内容和作用。最后,区分了并发与并行执行的区别,并简单说明了如何使用GDB调试跟踪子进程。
摘要由CSDN通过智能技术生成

(1)fork复制进程的过程:
一个现有进程可以用fork()函数通过系统调用创建一个新进程
#include <unistd.h>
pid_t fork(void);
// 返回:若成功则在子进程中返回0,在父进程中返回子进程PID,若出错则返回-1
fork调用仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:
1)在父进程中,fork返回新创建子进程的进程ID;
2)在子进程中,fork返回0;
3)如果出现错误,fork返回一个负值-1;
在fork函数执行完毕后,如果创建新进程成功,则出现两个进程,一个是子进程,一个是父进程。在子进程中,fork函数返回0,在父进程中,fork返回新创建子进程的PID。我们可以通过fork返回的值来判断当前进程是子进程还是父进程。
(2)僵死进程的概念:子进程先于父进程结束,父进程没有调用wait()获取子进程的退出码。
僵死进程的处理方法:
子进程退出时向父进程发送SIGCHILD信号,父进程处理SIGCHILD信号。在信号处理函数中调用wait进行处理僵尸进程。
写时拷贝: 写的时候(改变字符串的时候)才会真正的开辟空间拷贝(深拷贝),如果只是对数据的读时,只会对数据进行浅拷贝。(深拷贝:增加了一个指针,并新开辟了一块空间,让指针指向这块新开辟的空间。浅拷贝:增加了一个指针,指向原来已经存在的内存)(浅拷贝&

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值