linux环境C开发系列4-进程

5 篇文章 0 订阅

概述

进程和线程的概念是linux中必然涉及的,进程是系统进行资源分配的最小单位,线程时系统进行调度的最小单位。
进程和程序的区别可以简单理解为动和静的区别,但是进程和程序并不是一一对应关系,可能一个进程对多个程序,一个程序对多个进程。
在一个进程中创建新的进程,则原有进程称为父进程,新的进程称为子进程。
进程的区分是通过进程ID—PID来区分的。
有关于进程的操作涉及创建子进程、获取ID等,还和进程有关系的就是一些进程间的通信以确保进程之间可能存在的协同关系。

子进程创建

函数作用
pid_t getpid(void)获得当前进程的pid
pid_t getppid(void)获得当前进程的父进程的pid
pid_t fork(void)在进程中创建子进程,子进程的数据空间和堆栈空间都会从父进程复制,代码段共享。调用一次会返回两次结果,可能返回值:父进程中返回子进程pid,子进程返回0,失败错误返回负值。判断返回值来判断处于父进程还是子进程还是创建失败。父子进程运行先后顺序不定
pid_t vfork(void)子进程和父进程共享数据段,且子进程先运行,父进程之后在运行

以上的创建函数结果中,子进程会有新的PID。
还有一个exec函数族,这个函数族可以用来创建替换的进程,即新进程会沿用创建它的进程PID。

父进程回收子进程

进程运行结束后,其资源如PID需要被回收,这个回收的工作可以是父进程来做,也可以是系统的init进程来做。如果不回收,则会形成僵尸进程,即占着PID等资源不释放。
父进程回收子进程的函数

pid_t wait(int *status)

该函数将阻塞父进程,直到其某个子进程退出。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值