网站大量收购闲置独家精品文档,联系QQ:2885784924

linux环境编程—进程编程.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux环境编程—进程编程

* * * * * 进程编程 – execl和execv execl和execv,这两个函数的区别在于程序的命令行参数如何传递。l代表list,意味着execl的每个命令行参数都是单独传入。v代表vector,所有命令行参数打包成 char *argvp[]的方式传给execv。 其实execl所做的是把单独的命令行参数打包后传给execv。 execlp和execvp,p代表path,也就是说你只要在第一个参数中指明可执行文件的名字,系统便会从PATH指定的路径中寻找那个可执行文件并执行。不设置environ,观察程序运行区别。 execle和execve,函数的最后一个参数为环境变量。 例:execv.c execvp.c execve.c * 进程编程 – system函数 system执行外部一个命令或者程序,相当于fork, exec,waitpid。 #include stdlib.h int system(const char *command); 返回-1表示失败,成功返回命令的返回状态。 如果command中没有路径符/,则从PATH环境变量指定的目录中寻找该命令。 * 作业 1. 下面的程序一共会创建多少个进程? int main(int argc, char **argv) { int i; for(i=0;i3;i++) { if(fork()==0){ printf(“the child %d\n”,i); } else { printf(“the parent %d\n”,i); } } } 2. 用fork 、exec、waitpid实现system函数功能。 3. 编写一段程序,创建一个“僵尸”进程,然后调用system执行ps命令验证该进程是“僵尸”进程。验证完后父进程用wait或者waitpid对该“僵尸”进程“收尸”。 * 作业 4. pp.c文件内容如下 pp.c int main() { printf(test); } 则下面的程序执行的输出结果是什么? extern char **environ; int main(int argc,char* argv[]) { printf(close-on-exec is %d,fcntl(1,F_GETFD)); fcntl(1,F_SETFD,16); printf(close-on-exec is %d,fcntl(1,F_GETFD)); execve(pp,argv,environ); printf(AH!!!!!); } * 作业 5. 写一个程序,创建10个进程,每个进程分别打印出自己的进程号及父进程号 6. 写三个程序,分别执行如下功能: 程序一:打印“I am process 1”,然后睡眠3秒,退出 程序二:打印“I am process 2”,然后睡眠3秒,退出 程序三:程序执行起来后创建两个子进程,此两个子进程分别使用exec运行程序一和程序二,当主进程检测到任何一个子进程退出时,打印出退出的子进程,并重新启动相应的子进程。 * * * * * * * * * * * * * * * * * * * * * * * * * * * 2009年12月22日 * LINUX应用编程-进程篇 HTTP协议 HTML语言 CGI编程 * 进程编程 – 进程与程序 程序是一个包含可执行代码的文件,它放在磁盘等介质上。 当程序被操作系统装载到内存并分配给它一定资源后,此时可称为进程。 为方便操作系统管理,每个进程都会有一个唯一的非负整数编号。 程序是一个静态概念,进程是一个动态概念。 * 进程编程 – 内存空间 Linux的虚拟地址空间也为0~4G ,Linux将整个4G线性地址空间分为用户空间和内核空间两部分,最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为“内核空间”。 而将较低的3G字节(从虚拟地址00xBFFFFFFF),供各个进程使用,称为“用户空间)。因为每个进程可以通过系统调用进入内核,因此,Linux内核由系统内的所有进程共享。 于是,从具体进程的角度来看,每个进程可以拥有4G字节的虚拟空间。 当进程陷入内核时,内核代表进程运行。 * 进程编程 – 进程描述 进程描述符:当进程产生时有Linux操作系统分配。 内存:用来存放进程要执行的代码和使用的数据。 文件描述符:进程运行时打开的文件。 认证信息:用户和组ID 进程执行环境:各种环境变量 资源安排:CPU时间 进程状态 * 进程编程 – 进程状态 用户状态:进程在用户状态下运行的状态。

文档评论(0)

shaoye348 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档