LINUX环境高级编程-第四讲进程.ppt

LINUX环境高级编程-第四讲进程.ppt

ID:49563893

大小:1.29 MB

页数:136页

时间:2020-02-25

LINUX环境高级编程-第四讲进程.ppt_第1页
LINUX环境高级编程-第四讲进程.ppt_第2页
LINUX环境高级编程-第四讲进程.ppt_第3页
LINUX环境高级编程-第四讲进程.ppt_第4页
LINUX环境高级编程-第四讲进程.ppt_第5页
资源描述:

《LINUX环境高级编程-第四讲进程.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux环境高级编程第四讲进程进程进程环境(第七章)进程控制(第八章)进程关系(第九章)进程进程环境(第七章)进程控制(第八章)进程关系(第九章)进程环境main函数和命令行参数进程的启动和终止环境表和环境变量存储空间布局存储器分配setjmp和longjmp函数进程环境main函数和命令行参数进程的启动和终止环境表和环境变量存储空间布局存储器分配setjmp和longjmp函数main函数和命令行参数通常,C程序总是从main函数开始执行main函数原型intmain(intargc,char*argv[]);参数argc:命令行参数的个数argv:指向命令行参数的各个

2、指针所构成的数组命令行$./testHelloWorld程序中怎么样获得命令行参数main函数和命令行参数参数agrv:argv[1]argv[0]argv[2]...........argv[argc-1]argvmain函数和命令行参数程序演示(4.1)进程环境main函数和命令行参数进程的启动和终止环境表和环境变量存储空间布局存储器分配setjmp和longjmp函数进程的终止8种方式使进程终止正常终止从main返回调用exit调用_exit或_Exit最后一个线程从其启动例程返回最后一个线程调用pthread_exit异常终止进程的终止异常终止调用abort接到一个

3、信号并终止最后一个线程对取消请求做出响应有关信号、线程的终止方式,后面讨论或者自学进程终止三个终止函数:exit、_Exit、_exit函数原型:voidexit(intstatus);void_Exit(intstatus);void_exit(intstatus);exit函数执行一个标准I/O库的清理关闭操作(为所有打开流调用fclose函数)后,进入内核_Exit、_exit函数立即进入内核进程终止(4.2)exit等函数的参数status:进程的终止状态程序演示查看进程终止状态echo$?atexit函数当进程终止时,程序可能需要进行一些自身的清理工作,如资源释放

4、等等atexit函数提供了进行这样工作的机会它允许用户注册若干终止处理函数,当进程终止时,这些终止处理函数将会被自动调用atexit函数用于注册用户提供的终止处理函数函数原型intatexit(void(*func)(void));参数func:函数指针,返回值为void,无参返回值成功返回0,出错返回非0值atexit函数程序演示(4.3)注意:先注册的函数,后被运行。调用_exit函数并不会触发终止处理函数进程的启动和终止Kernelexitfunc.用户函数main函数C启动例程终止处理函数终止处理函数标准I/O清理函数_exitexit不返回execcallcall

5、returncallreturncallreturnUserprocess_exit_exitexit不返回exit不返回call返回返回进程环境main函数和命令行参数进程的启动和终止环境表和环境变量存储空间布局存储器分配setjmp和longjmp函数环境表和环境变量每个进程都会接收到一张环境表通过environ找到环境表externchar**environ;环境字符串:name=value环境表和环境变量访问环境变量的方法直接使用environ使用getenv和putenv等函数getenv函数用于获取环境变量值函数原型char*getenv(constchar*n

6、ame);返回与name关联的value的指针,若未找到则返回NULL返回的指针是指向新分配的内存,还是环境表中存在的值?(程序4.4)设置环境变量三种方法:putenvsetenvunsetenvputenv函数将形式为name=value的字符串,放入环境表中;若name已经存在,则先删除其原来的定义。函数原型:intputenv(char*str);设置环境变量setenv函数原型:intsetenv(constchar*name,constchar*value,intrewrite);setenv将环境变量name的值设置为value。若name已经存在rewrit

7、e!=0,则删除其原先的定义rewrite==0,则不删除其原先的定义设置环境变量unsetenv函数用于删除某个环境变量函数原型intunsetenv(constchar*name);删除name的定义疑问?前两个设置环境变量的函数,都给出了自己的缓冲区存放环境变量。在环境表中是否直接使用这些缓冲区,还是环境表自己分配了缓冲区?(程序4.5)进程环境main函数和命令行参数进程的启动和终止环境表和环境变量存储空间布局存储器分配setjmp和longjmp函数C程序存储空间布局命令行参数和环境变量栈堆未初始化的数据

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

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

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