- 1、本文档共35页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LINUX应用编程 – 进程篇 2009年12月22日 LINUX应用编程-进程篇 HTTP协议 HTML语言 CGI编程 进程编程 – 进程与程序 进程编程 – 内存空间 进程编程 – 进程描述 进程编程 – 进程状态 进程编程 – 进程状态及转换 进程调度原理图 进程编程 – 进程的布局 进程编程 – 进程的环境变量 进程编程 – EXIT系统调用 进程编程 – RETURN退出进程 进程编程 – 进程终止处理函数 进程编程 – getenv、setenv函数 进程编程 – putenv、clearenv函数 进程编程 – 跨函数跳转 进程编程 – setjmp、longjmp函数 进程编程 – getpid、getppid函数 进程编程 – fork:进程的创建 进程编程 – 写时复制 进程编程 – 子进程的继承 进程编程 – 子进程的继承 进程编程 - 子进程独有的 进程编程 – 继承的测试题 进程编程 – vfork 进程编程 – wait和waitpid 进程编程 – wait和waitpid 进程编程 – wait和waitpid 进程编程 – exec函数 进程编程 – EXEC的函数关系 进程编程 – execl和execv 进程编程 – system函数 作业 作业 作业 5. 写一个程序,创建10个进程,每个进程分别打印出自己的进程号及父进程号 6. 写三个程序,分别执行如下功能: 程序一:打印“I am process 1”,然后睡眠3秒,退出 程序二:打印“I am process 2”,然后睡眠3秒,退出 程序三:程序执行起来后创建两个子进程,此两个子进程分别使用exec运行程序一和程序二,当主进程检测到任何一个子进程退出时,打印出退出的子进程,并重新启动相应的子进程。 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执行外部一个命令或者程序,相当于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!!!!!); } * 程序是一个包含可执行代码的文件,它放在磁盘等介质上。 当程序被操作系统装载到内存并分配给它一定资源后,此时可称为进程。 为方便操作系统管理,每个进程都会有一个唯一的非负整数编号。 程序是一个静态概念,进程是一个动态概念。 Linux的虚拟地址空间也为0~4G ,Linux将整个4G线性地址空间分为用户空间和内核空间两
文档评论(0)