进程控制编程

1.进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元。

进程与程序的不同:a:进程是动态的,程序是静态的;

                                    b:进程是短暂的,程序是长久的;

                                    c:进程与程序的组成不同;

                                    d:通过多次执行,一个程序可以对应多个进程;通过调用关系,一个进程可以包括多个程序。

2.进程的创建:

进程的创建都是由父进程创建的,进程可以创建子进程,子进程也可以创建属于自己的子进程。

外面一般使用的创建系统调用是fork或者vfork或者exce函数族。其中fork用的最多。

fork与vfork的比较:

fork创建的子进程与父进程不会共享空间,子进程会对父进程进行完全的拷贝;但是fork子进程与父进程的执行顺序不确定。

vfork创建的子进程会与父进程共享数据段,并且执行的顺序肯定是子进程在前,父进程在后。

fork被调用一次,会返回两次,并且返回值可能会有三个。0,-1以及子进程的ID。

fork与exce函数族的对比:

fork创建一个新的进程,会产生一个新的PID;

exce启动一个新的程序,替换原有的进程,但是进程的PID不会改变。

exce函数族包括excel以及excev等函数。

3.进程等待:

pid—t  wait(int * status)

功能:阻塞该进程,直到某个子进程退出。

pid—t  waitpid(pid—t  pid,int*status,int options)

功能:会暂停目前进程的执行,直到有信号来到或子进程结束。

4.进程退出:

exit与_exit的区别:

—exit:直接使进程停止,清除其使用的内存,并且清除缓冲区的内容。

exit:在进程停止之前,要检查文件的打开情况,并把文件缓冲区中的内容写回文件才停止进程。

僵尸进程:如果子进程结束了,但是父进程并未为其收尸,那么此时的子进程就是一个僵尸进程。在一般的程序中,僵尸进程存在的时间很短,但是如果父进程是一个死循环一直执行不结束,那么子进程会一直存在,并且占用内存。所以在写程序的时候,父进程一定要调用wait的系统调用来回收子进程。

孤儿进程:父进程死了,子进程就成为孤儿进程。但是孤儿进程并不是没有父进程,当之前的父进程被杀,此时子进程的父进程就是编号为1的进程,也就是所谓的祖先进程。

僵尸进程与孤儿进程的最大区别就是僵尸进程是死的,孤儿进程是活的。






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值