linux进程控制函数

linux进程控制函数

ID:20794188

大小:1.28 MB

页数:12页

时间:2018-10-15

linux进程控制函数_第1页
linux进程控制函数_第2页
linux进程控制函数_第3页
linux进程控制函数_第4页
linux进程控制函数_第5页
资源描述:

《linux进程控制函数》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux进程控制函数fork()#include#includepid_tfork(void);一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程。子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。pid_t是一个宏定义,其实质是int,定义中。返回值:若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1。注意:子进程持有的是上述存储空间的“副本”,这

2、意味着父子进程间不共享这些存储空间。linux将复制父进程的地址空间内容给子进程,因此,子进程有了独立的地址空间。为什么fork()会返回两次?由于在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中,等待返回。因此,fork函数会返回两次。一次是在父进程中返回,另一次是在子进程中返回,这两次的返回值是不一样的。示例代码#include#include#includeintmain(intargc,char**argv){in

3、tpid=fork();if(pid==-1){printf("error!");}elseif(pid==0){printf("Thisisthechildprocess!");}else{printf("Thisistheparentprocess!childprocessid=%d",pid);}return0;}System()#includeintsystem(constchar*string);system()会调用fork()产生子进程,由子进程来调用/bin/sh-

4、cstring来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。如果system()调用成功则最后会返回执行shell命令后的返回值,但是此返回值也有可能为system()调用/bin/sh失败所返回的127,因此最好能再检查errno来确认执行成功。#includemain(){system(“ls-al/etc/passwd/etc/shadow”);}执行结果:-rw

5、-r--r--1rootroot705Sep313:52/etc/passwd-r---------1rootroot572Sep215:34/etc/shado示例代码Exec()#includeintexecl(constchar*path,constchar*arg,...);intexeclp(constchar*file,constchar*arg,...);intexecle(constchar*path,constchar*arg,...,char*constenvp

6、[]);intexecv(constchar*path,char*constargv[]);intexecvp(constchar*file,char*constargv[]);intexecve(constchar*path,char*constargv[],char*constenvp[]);exec..是一个函数族,这里列出了它的六个函数。功能:装入并运行其它程序。fork()创建一个进程,但是这个进程只能局限在自身的代码段范围内,不能去执行别的程序;使用exec函数调用,用于从一个进程的地址空

7、间中执行另外一个进程,覆盖自己的地址空间,执行别的用户程序。Exec()一个进程使用exec执行后,代码段、数据段、bss段和堆栈都被新程序覆盖,唯一保留的是进程号。*path说明由路径名指定执行程序。如:execl(“/bin/ls”,…)*file说明由文件指定执行程序。其第二个参数以及用省略号表示的其他参数一起组成了该程序执行时的参数表,按照linux中的惯例,参数表的第一项是不带路径的程序文件名。被调用的程序可以访问这个参数表,它相当于shell下的命令行参数。实际上,shell本身对命令的调

8、用也是用exec来实现的。由于参数的个数是任意的,所以需要用一个NULL指针来标记参数表的结尾。#include#include#include#includevoidmain(intargc,char*argv[]){inti;printf("Commandlinearguments:");for(i=0;i

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

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

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