论‘进程’相关操作

★进程相关概念

        (1)进程:是一个能够分配处理器并由处理器执行的,能够携带资源的活动实体。

        (2)进程控制块(PCB):每一个进程中都有唯一的一个进程控制块来保存进程的相关信息,实际PCB就是一个task_struct的结构体。具体的见http://10740590.blog.51cto.com/10730590/1785457

        (3)进程状态:进程是一个活动实体,并不代表进程是一直处于运行状态,一个进程可以有很多种状态。

            △R(running)表示运行状态

             △S(sleeping)表示可唤醒睡眠状态

             △D(disk sleep)表示不可唤醒的睡眠状态

             △T(stopped)表示暂停状态

             △t(tracing stop)表示终止状态

             △X(dead)表示死亡状态

             △Z(zombie)表示僵尸状态


★进程创建执行

        进程的创建有两种方法:fork()和execve()。两者都是创建的进程都是运行进程的子进程,创建后的子进程会得到父进程中的数据段、栈段、堆区域的一份拷贝,这些子进程都是可以对其进行更改的,但是文本段是两者共享的,不能被子进程进行修改。


      下面是fork的使用方法:

wKiom1eVgOjA0MHWAAB1SP7g2ro560.png


        运行结果:

wKiom1eVganyzrMKAAAR-BtYeMg291.png


★进程终止

      进程终止有以下几种方式:

             (1)从main函数返回

              (2)调用exit函数

              (3)调用_exit或_Exit;

              (4)最后一个线程从启动例程返回

              (5)最后一个线程调用pthread_exit;

              (6)调用abort函数

              (7)接到一个信号并终止

              (8)最后一个线程对取消请求做出相应


      前5种为正常终止,后三种为异常终止。从main函数中return退出为进程退出,因为没有在继续执行的代码,但是在程序中间的任何位置return,不算是进程退出,只能算是程序调用结束。

      exit返回:

                 exit()还让return系统会强制刷新缓冲区,文件描述符

                _exit()强制直接结束,不需要管其余的东西

                _Exit()和_exit是相同的 


★exit函数与atexit函数

(1)exit、atexit函数定义

       头文件:#include <stdlib.h>                  头文件:#include <stdlib.h>

                     void exit(int status);                                int atexit(void (*fun)(void));


     一个进程可以登记若干个函数,这些函数由exit自动调用,这些函数被称为终止处理函数,atexit函数就可以登记这些函数。exit调用终止处理函数的顺序和atexit登记的顺序是相反的,如果一个函数可以被多次的登记,也可以被多次的调用。

    

wKioL1eVjNeyY5DEAABjm3-k2jg697.png

     运行结果:

wKioL1eVjWKAk_mcAAAryMshYj8146.png


★栈帧

1.堆栈

      堆栈是C语言以及其他语言运行时必须使用的一块空间,它的主要作用是函数调用、传递参数、保存返回地址、提供局部变量空间的。

      ①堆需要程序员自己申请,并且需要显示的进行释放,申请和释放必须是成对出现的,要不然就会出现内存泄漏,因为堆上的空间生命周期都是一直存在,直到手动进行释放。而栈是系统自动进行分配的,回收也是进程运行结束时系统自动回收。

      ②堆的空间较大,栈的空间小,一般申请大的内存都在堆上。


2.栈帧的详细解释:http://blog.csdn.net/yxysdcl/article/details/5569351




本文出自 “无心的执着” 博客,谢绝转载!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值