Linux 进程概念+fork()

本文介绍了进程的基本概念,包括程序执行实例和内核中资源分配的角色。重点讲解了进程控制块(PCB)及其在Linux中的实现。通过`ps`和`fork`函数的应用,展示了如何查看和创建子进程,以及它们之间的关系。
摘要由CSDN通过智能技术生成

基本概念

        课本概念:程序的一个执行实例,正在执行的程序等。
        内核观点:担当分配系统资源(CPU时间,内存)的实体。

进程 = 一个程序加载到内存中的代码数据 + 内核中为其创建的相关数据结构(进程控制块PCB)

进程控制块PCB 

        进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。
        课本上称之为PCB(process control block), Linux操作系统下的PCB是: task_struct

查看进程 

        

ps -axj | grep process

通过上述命令可以查看进程,grep后的是你所运行的进程名称,作用是对其余进程进行过滤,筛选掉不需要的进程。

通过系统调用获取进程标识符 

        进程id(PID)
        父进程id(PPID)

fork()函数的应用 

        fork有两个返回值。子进程返回0,父进程返回子进程的pid。
        父子进程代码共享,数据各自开辟空间,私有一份(采用写时拷贝)。

#include <iostream>
#include <unistd.h>
#include <sys/types.h>

using namespace std;

int main()
{
    pid_t id = fork();
    

    if(id == 0)
    {
        while(1)
        {
        cout <<"我是子进程中fork函数的返回值:" << id << endl;
        cout << "我是子进程,我的pid是:" << getpid() << " 父进程pid:" << getppid() << endl;
        
        sleep(1);
        }
    }
    else if(id > 0)
    {
        while(1)
        {
        
        cout <<"我是父进程中fork函数的返回值:" << id << endl;
        cout << "我是父进程,我的pid是:" << getpid() << " 我的父进程pid是:" << getppid() << endl;
        
        sleep(1);
        }
    }

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值