进程(1)—— 基础理论及fork()

一 进程基础理论

  进程 - 一个在内存中运行的程序
  主流的操作系统基本都支持多进程。
  Linux中查看进程的方法
    ps - 查看本终端启动的进程
    ps -aux Linux专用的查看进程
    ps -ef Unix/Linux通用的查看进程
  显示的东西有所差别,Unix系统不直接支持ps -aux ,但/usr/ucb/ps -aux 可以执行。
  
  kill -9 进程ID 可以杀进程。

  如果进程a启动了进程b,a叫父进程,b叫子进程。
  Unix/Linux的进程启动次序,首先内核启动0进程,0进程 启动 1进程和2进程(有些Linux只启动1进程),1进程 和 2进程 再 启动其他所有进程。

  进程的常见状态:
    S - 休眠状态(省资源)
    s - 有子进程
    O - 可运行状态
    R - 运行状态
    Z - 僵尸进程(已经结束但资源没有回收的进程)

父子进程之间的关系:
1. 父进程启动子进程后,父子进程同时运行。
2. 如果子进程先结束,子进程会给父进程发信号,由父进程负责回收子进程的相关资源。
3. 如果父进程先结束,子进程变成孤儿进程,孤儿进程会把init进程(进程1)作为新的父进程,init进程也叫孤儿院。
4. 如果子进程先结束,同时发的信号父进程没有收到或者子进程没有发信号,子进程就变成僵尸进程。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(){
    printf("父进程%d开始运行\n",getpid());
    pid_t pid = fork();
    if(pid == 0){
        printf("子进程%d开始运行,父进程%d\n",
        getpid(),getppid());
        sleep(3);
        printf("休眠结束,父进程%d\n",getppid());
        exit(0);
    }
    sleep(1);
    printf("父进程%d结束\n",getpid());
    return 0;
}

二 进程ID

关于进程的ID - PID

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值