进程的执行与结束

一、

进程创建好之后

子进程和父进程执行的东西差不多   //子承父业

父进程创建出子进程之后,子进程做的事情和父进程完全不同 //自力更生

二、进程程序的替换

正在执行的进程本身不会发生改变,仅仅把一个新的程序代码和数据替换了原来进程的代码和数据

进程程序替换并不会创建新的进程,它只会加载程序的代码和数据,去替换原来的进程!!!

exec族函数

  1. 这些函数如果调用成功则加载新的程序从启动代码开始执行,不再返回;
  2. 如果调用出错则返回-1;
  3. 所以exec函数只有出错的返回值而没有成功的返回值;

l(list) : 表示参数采用列表;
v(vector) : 参数用数组;
p(path) : 有p自动搜索环境变量PATH;
e(env) : 表示自己维护环境变量;

execv和execl也是没啥区别,只不过execv叭execl的以列表形式的传参,变成了以数组形式的传参;

execlp和execl的区别在于,execlp在第一个参数时候,不需要全路径,只需要写上执行命令的文件名即可,表示你需要执行谁,往后的参数也就是和execl的传参一样;

这个函数execvp和execv的区别在于。execvp第一个传参时候,不需要给出要执行命令的绝对路径,只需要给出要执行命令的文件名即可;

这段进程中,原先的main程序被execv替换,将原来的mian函数程序替换成ls命令,所以不会打印end。

程序替换函数,通常不父进程去执行,而是交给子进程执行,因为这也子进程可以做它的事,父进程也可以做自己的事,由于进程之间的独立性,即使子进程去执行execl函数时候,替换的也是子进程的代码和数据,而父进程的代码和数据是不会被影响的。

三、进程的终止

atexit:注册退出清理函数(cleanup)

四、进程的等待

pid_t wait (int* status),status是指针类型

进程等待的作用:

父进程在它的执行代码中调用进程等待的方法,等待子进程退出,防止子进程变成僵尸进程实质:子进程保存了自己的进程退出码给父进程,父进程获取了退出码后才能释放子进程资源

函数参数是输出型参数,通过形参修改实参
将wait函数内部计算的某个结果通过status变量返回给调用者

返回值
成功:返回处理的退出的子进程的pid
失败:返回-1

阻塞:为了完成一个功能发起了一个调用,但是这个调用完成条件不具备,则接口一直等待不返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值