- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux进程把持函数
Linux进程控制函数 fork() #include unistd.h #includesys/types.h pid_t fork( void ); 一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程。子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。 pid_t 是一个宏定义,其实质是int,定义sys/types.h中。 返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1。 注意:子进程持有的是上述存储空间的“副本”,这意味着父子进程间不共享这些存储空间。linux将复制父进程的地址空间内容给子进程,因此,子进程有了独立的地址空间。 为什么fork()会返回两次? 由于在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中,等待返回。因此,fork函数会返回两次。 一次是在父进程中返回,另一次是在子进程中返回,这两次的返回值是不一样的。 示例代码 #includesys/types.h #includeunistd.h #includestdio.h int main(int argc, char ** argv ) { int pid = fork(); if (pid == -1 ) { printf(error!); } else if( pid == 0 ) { printf(This is the child process!); } else{ printf(This is the parent process! child process id = %d, pid); } return 0; } System() #includestdlib.h int system(const char * string); system()会调用fork()产生子进程,由子进程来调用/bin/sh -c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。 如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。如果system()调用成功则最后会返回执行shell命令后的返回值,但是此返回值也有可能为 system()调用/bin/sh失败所返回的127,因此最好能再检查errno 来确认执行成功。 #includestdlib.h main() { system(“ls -al /etc/passwd /etc/shadow”); } 执行结果: -rw-r--r-- 1 root root 705 Sep 3 13 :52 /etc/passwd -r--------- 1 root root 572 Sep 2 15 :34 /etc/shado 示例代码 Exec() #include unistd.h int execl(const char *path, const char *arg, ...); int execlp(const char *file, const char *arg, ...); int execle(const char *path, const char *arg, ..., char *const envp[]); int execv(const char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); int execve(const char *path, char *const argv[], char *const envp[]); exec..是一个函数族,这里列出了它的六个函数。 功 能: 装入并运行其它程序。 fork()创建一个进程,但是这个进程只能局限在自身的代码段范围内,不能去执行别的程序;使用exec函数调用,用于从一个进程的地址空间中执行另外一个进程,覆盖自己的地址空间,执行别的用户程序。 Exec() 一个进程使用exec执行后,代码段、数据段、bss段和堆栈都被新程序覆盖,唯一保留的是进程号。 *path说明由路径名指定执行程序。 如:execl(“/bin/ls”,…) *file说明由文件指定执行程序。 其第二个参数以及用省略号表示的其他参数一起组成了该程序执行时的参数表,按照linux中
您可能关注的文档
- ftth基础学问.pdf
- g310全自动印刷机掌握规范.doc
- gba模拟器ezxvba完全运用手册for a780.pptx
- gcj2013cad系列教法.pdf
- genymotion模拟器的运用.ppt
- gmat强化语法(新版本) -new.ppt
- gmat数学术语系列1数论核心语汇.docx
- gmat数学语汇大全.pdf
- gmat数学语汇汇总.pdf
- gmat语法that用法总结.pdf
- 五位一体教案教学教案设计.docx
- 思修与法基-教学教案分享.pptx
- 大学军事之《中国国防》题库分享.docx
- 2023版毛泽东思想和中国特色社会主义理论体系概论第五章-中国特色社会主义理论体系的形成发展.pdf
- 思修与法基 教学全案分享.docx
- 大学军事之《军事思想》题库分享.docx
- 《经济思想史》全套课件-国家级精品课程教案课件讲义分享.pdf
- 厦门大学国际金融全套资料(国家级精品课程)--全套课件.pdf
- 2023版毛泽东思想和中国特色社会主义理论体系概论第五章-中国特色社会主义理论体系的形成发展.docx
- 2023版毛泽东思想和中国特色社会主义理论体系概论第五章中国特色社会主义理论体系的形成发展分享.pdf
最近下载
- 2024聊城高级财经职业学校工作人员招聘考试试题及答案.docx VIP
- 1.1正数和负数 说课稿 2024—2025学年人教版数学七年级上册.docx
- 一种浓香型白酒发酵容器.pdf VIP
- 湖北大学《模拟电子技术基础》2018-2019年第一学期期末试卷B卷.pdf
- 事业单位考试职业能力倾向测验试卷及解答参考.docx VIP
- 详解SR220C电气说明书_20070822.doc
- 大班数学活动数玉米.pptx
- 与法治》六年级下册第8课《科技发展造福人类》精品教案.pdf
- 《网络管理与维护》课程标准 .pdf VIP
- 第一单元《刨削及其他工具》课件北京出版社七年级劳动技术《木工设计与制作》.pptx VIP
文档评论(0)