linux高级编程(五、进程)

linux高级编程(五、进程)

ID:10981467

大小:48.00 KB

页数:6页

时间:2018-07-09

linux高级编程(五、进程)_第1页
linux高级编程(五、进程)_第2页
linux高级编程(五、进程)_第3页
linux高级编程(五、进程)_第4页
linux高级编程(五、进程)_第5页
资源描述:

《linux高级编程(五、进程)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、/////////////////////////第五天进程//////////////////////////////////////////////////////////////////////////////////////////三、进程(一)进程的基本概念程序:代码,一个普通二制流的文件,里面都是指令。进程:是处于运行状态的程序,是程序执行过程,是运行的程序。一个源程序经过编译、链接后,成为一个可执行的程序,当可执行程序被系统加载到内存空间运行时就称为进程。同一个程序可以有多个进程,每一个进程都有自已的PID线程:是

2、独立指令流,是运行的代码段。是进程的一部分,在一个进程中可以有多个线程。进程组:linux系统中,每个进程都唯一归属于某个进程组,在shell环境中,一条linux指令就形成一个进程组,一个进程组可以有多个进程。进程会话:用户登陆一个新的shell环境,一个新的会话就产生了,一个会话可以包括若干个进程组。这些进程组只能有一个前台进程组,其它进程组为后台运行进程组1.进程属性进程创建后,系统内核为其分配了一系列的数据结构。这些数据结构中保存了进程的相关属性,如下内容:ps-Alef查看所有进程ps-alef查看当前终端进程FSUI

3、DPIDPPIDCPRINIADDRSZWCHANTTYTIMECMD4S0100780-518-?00:00:01initUID进程用户标识PID进程的标识符,进程创建时,内核为进程分配的唯一标识IDPPID进程的父标识符,linux下全部进程组成一棵进程树,树根进程是0号进程swapper,除根进程外,每个进程都有其对应的父进程STIME进程状态,wait等待状态,-运行状态2.进程的内存映像地址由高到低命令行参数栈:栈存放珵序局部变量,函数参数、函数返回值堆:堆的大小不固定,可根据程序运行过程中的要求动态变化BBS段:程序

4、未初始化的全局变量数据段:数来存放程序已初始化的全局变量、静态变量等代码段:可执行程序在内存中的映像,代码段是只读的,存放可执行文件指令3.进程的启动手动启动(加载)前台:目录/程序名程序运行于终端前台,终端不能做其它操作后台:目录/程序名&程序执行于终端后台,终端还可以操作其它的程序自动启动(加载)程序在开机时自动运行4.进程状态进程是由操作系统内核调度运行,在调度过程中,进程的状态是不断发生变化的,这些状态包括:运行状态等待状态、暂停状态、僵尸状态、退出状态。运行状态:有两种,一是正在运行,二是处于就绪状态。就绪状态只要得到

5、CPU就可以立即投入运行。等待状态:有两类,可中断,不可中断。处于中断等待状态进程,即可以被信号中断,也可以被唤醒。不可中断状态只有等待被唤醒,不可被中断暂停状态:接到某个信号,就会暂时停止运行。僵尸状态:表示进程结束但尚未消亡,一个进程结束运行就会处于僵尸状态,向父进程发送SIGCLD信号,父进程调用wait为子进程的退出做最后的收尾工作。5.进程的优先级linux允许多个进程同时运行,但不可能实现真正的同时占用CPU,而是使用“时间片轮转”的进程调度方式,为每个进程指派一定的运行时间。进程的优先级是由优先级别PR和进程的谦让

6、值NI两个因素联合确定的。6.进程的运行环境程序的入口函数main,进程开始执行时都是从main函数开始。其中argv是参数数组,编程时可以直接访问命令行参数组。用户在编程过程中,需要保存某个配置项的值,一个方法是将其写到文件中,另一个方法是定义成环境变量。用户在登录shell时,会从两个位置获得环境变量的定义,一个是全局环境变量文件/etc/profile另一个是当前用户的环境变量文件在命令行内增加环境变量export环境变量名=值echo$环境变量名unset$环境变量名env在命令行增加的环境变量,只在本次会话中有效,会话

7、一旦退出,该环境变量将会失效。如果要永久增加环境变量,可以在.profile中写入在程序中用函数增加环境变量#include1)获取环境变量char*getenv(constchar*name);name环境变量名返回值成功环境变量值失败NULL(未定义环境变量)2)设置环境变量intputenv(char*string);string要设置的环境变量串,其格式为"环境变量名=值"返回值成功0失败-1例:#include#includeintmain(){char*buf

8、fer;buffer=getenv("CONFIG_PATH");if(buffer==NULL){putenv("CONFIG_PATH=/etc");}printf("CONFIG_PATH=%s",getenv("CONFIG_PATH"));retu

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。