Linux的进程创建 冬Linux提供了几个系统调用来创建和终止进程,以及 执行新程序 >Fork,vfork和clone系统调用创建新进程 ●其中,clone创建轻量级进程,必须指定要共享的资源 >exec系统调用执行一个新程序 >ext系统调用终止进程(进程也可以因收到信号而终止) ersity of science and technol 嵌入式系统实验室 11123/09 Linux操作系统分析 7192 EMBEDDED SYSTEM LABORATORY 5uE料DUN0 ITUTE FOR AOVANCED5 UOY DF U百TC
11/23/09 Linux操作系统分析 7/92 Linux的进程创建 ❖Linux提供了几个系统调用来创建和终止进程,以及 执行新程序 ➢ Fork,vfork和clone系统调用创建新进程 ⚫ 其中,clone创建轻量级进程,必须指定要共享的资源 ➢ exec系统调用执行一个新程序 ➢ exit系统调用终止进程(进程也可以因收到信号而终止)
fork fok系统调用创建一个新进程 >调用fok的进程称为父进程 >新进程是子进程 >子进程几乎就是父进程的完全复制。它的地址空间是父进 程的复制,一开始也是运行同一程序。 ork系统调用为父子进程返回不同的值 11123/09 Linux操作系统分析 嵌入式系统实验室 8/92 EMBEDDED SYSTEM LABORATORY 5uE料DUAN0 ITUTE FOR AOVANCED5 FUOY OF U百TC
11/23/09 Linux操作系统分析 8/92 fork ❖ fork系统调用创建一个新进程 ➢ 调用fork的进程称为父进程 ➢ 新进程是子进程 ➢ 子进程几乎就是父进程的完全复制。它的地址空间是父进 程的复制,一开始也是运行同一程序。 ❖ fork系统调用为父子进程返回不同的值
exec 很多情况下,子进程从fork返回后很多会调用exec来开始 执行新的程序 >这种情况下,子进程根本不需要读或者修改父进程拥有的 所有资源。 > 所以fork中地址空间的复制依赖于Copy On Write:技术,降 低fork的开销 1958 嵌入式系统实验室 11123/09 Linux操作系统分析 9/92 EMBEDDED SYSTEM LABORATORY 5uE料DUN0 ITUTE FOR AOVANCED5 UOY DF U百TC
11/23/09 Linux操作系统分析 9/92 exec ❖ 很多情况下,子进程从fork返回后很多会调用exec来开始 执行新的程序 ➢ 这种情况下,子进程根本不需要读或者修改父进程拥有的 所有资源。 ➢ 所以fork中地址空间的复制依赖于Copy On Write技术,降 低fork的开销
使用fork和exec的例子 If (result=fork()==0){ /*子进程代码*/ 大 if(execve(“new_program”,.)<O) perror(execve failed"); exit(1); }else if (result<0){ 1958 perror(“fork failed /*result==子进程的pid,父进程将会从这里继续执行*/ o Science and Technol 嵌入式系统实验室 11123/09 Linux操作系统分析 10/92 EMBEDDED SYSTEM LABORATORY 百uE料DUAN0 ITUTE FOR AOVANCED5 FUOY DF U百TC
11/23/09 Linux操作系统分析 10/92 使用fork和exec的例子 If (result = fork() == 0){ /* 子进程代码 */ … if (execve(“new_program”,…)<0) perror(“execve failed”); exit(1); }else if (result<0){ perror(“fork failed”) } /* result==子进程的pid,父进程将会从这里继续执行*/ …