- 1、本文档共38页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2-2 创建进程 调用fork 子进程为父进程的副本 子进程和父进程都从调用fork的地方继续执行 #include unistd.h pid_t fork(void); 1.成功:在父进程中返回子进程的PID,在子进程中返回0 2.失败,返回-1,子进程没有创建。 2-2 fork系统调用 #include stdio.h #include sys/types.h #include unistd.h int main () { pid_t child_pid; printf (“the main program process ID is %d\n, (int) getpid ()); child_pid = fork (); if (child_pid != 0) { printf (“this is the parent process, with id %d\n, (int) getpid ()); printf (the childs process ID is %d\n, (int) child_pid); }else{ printf (“this is the child process, with id %d\n, (int) getpid ()); } return 0; } 子进程和父进程都从此开始执行 父进程执行代码 子进程执行代码 怎么区别父子进程? 子进程调用fork会返回0,父进程返回子进程的PID。 2-2 exec族函数 #include unistd.h extern char **environ; 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[]); 可变参数列表 2-2exec族函数 包含p字母:PATH execvp和execlp 程序名作为参数,在PATH中有哪些信誉好的足球投注网站 其他的必须指明全路径 包含l字母: List execl,execlp,execle 接受可长变参数 包含v字母: vargs execv,execvp,execve 字符串数组作为调用程序的参数,以NULL结束数组 包含e字母: enviroment 多了指明环境变量列表的参数 2-2fork和exec的结合 #include stdio.h #include stdlib.h #include sys/types.h #include unistd.h int spawn (char* program, char** arg_list) { pid_t child_pid; child_pid = fork (); if (child_pid != 0){ return child_pid; }else { execvp (program, arg_list); fprintf (stderr, an error occurred in execvp\n); abort (); } } 创建子进程:父进程的副本 在子进程装载执行program 2-3进程调度 Linux独立的调度父子进程 不保证先后顺序 不保证打断多久 原则上,保证子进程先运行 niceness 正值降低优先级 负值升高优先级 默认值 = 0. 2-3进程调度 #include unistd.h int nice(int inc); inc为正数,降低优先级。相反,提升优先级。 只有root才有权限提升优先级。 阶段总结 用ps命令查看进程,直观的描述PID和父子进程的关系 用两种方法创建进程,特别常用的是fork()和exec()的使用 exec()族函数的命名特点 进程的优先级的调整,只有root才有权限提升进程的优先级。 3-1信
文档评论(0)