在Linux/Unix下创建进程

分手后的思念是犯贱 2023-08-17 17:47 148阅读 0赞

前言

不同的操作系统采用不同的实现方式来创建进程。例如在Unix系统中,每个进程都有唯一的进程识别号(PID)。父进程利用fork系统调用来创建新进程。

fork的返回值小于零,说明进程没有创建成功;

fork的返回值等于零,表示子进程正在执行;

fork的返回值大于零,表示父进程还在执行。

子进程被创建后,一般使用execlp系统调用——用一个程序取代原来内存空间中的内容,然后开始执行。这样两个进程就各行其道了。

如果父进程无事可做,就执行wait系统调用,让自己插入睡眠队列,等待子进程的终结。

下面程序展示了在Unix/Linux系统中,父进程创建子进程以及各自分开活动的情况。

代码

  1. #include<unistd.h>
  2. #include<sys/types.h>
  3. #include<stdio.h>
  4. int main(int argc,char *arg[])
  5. {
  6. int pid;
  7. pid=fork();
  8. if(pid<0){
  9. fprintf(stderr,"进程创建失败");
  10. exit(-1);
  11. }
  12. else if(pid==0){
  13. execlp("/bin/ls","ls",NULL);
  14. }
  15. else{
  16. wait(NULL);
  17. printf("子进程已完成");
  18. exit(0);
  19. }
  20. }

思路解析

上述代码中,父进程创建了子进程,子进程会用打开目录/bin下面的ls命令

效果

在这里插入图片描述

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,148人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Windows创建进程简介

    正在执行的应用程序称为进程,进程不仅仅是指令和数据,它还有状态。状态是保存在处理器寄存器中的一组值,如当前执行指令的地址、保存在内存中的值,以及唯一定义进程在任一时刻任务的所有