系统级程序设计 进程管理

系统级程序设计 进程管理,第1张

本次课学习了进程的创建

1 进程控制

fork()函数创建

示例:

#include

pid_t fork(void);

返回值:

  • 成功:返回两个值,子进程创建成功后,原程序会被复制,就有了两个fork函数。父进程的fork函数会返回子进程的pid,子进程的fork函数会返回0.
  • 不成功:若子进程创建失败,原程序不会复制,父进程的fork函数返回

案例:

#include
#include
#include
int main(){
    pid_t tempPid;
    tempPid = fork();
    if(tempPid == -1){
        perror("fork error");
    }else if(tempPid > 0){//parent
        printf("parent process, pid = %d, ppid = %d\n", getpid(), getppid());
    }else{//child
        printf("child process, pid = %d, ppid = %d\n", getpid(), getppid());
    }//of if
    printf("......finish......");
    return 0;
}//of main

 

 

2.创建多个进程 

 根据之前学过的循环来说,直接for循环遍历即可完成多个进程的创建,但实际上如果直接遍历会导致进程数量呈现倍数增长的情况 ,i的数字越大,生成的数量就越多

解决方法:在循环里加入判断语句辨别父子进程

 

 

 

 

存在的问题是子进程的序号不是递增的,而且终端提示符后面仍然有子进程信息打印,而命令提示符在最后一行的开头闪烁。

解决方法:sleep函数,暂缓进程的进行

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/874544.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存