进程与fork

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

四要素

  • 要有一jin段程序供该进程执行
  • 进程专用的堆栈空间
  • 进程控制块,在linux中具体实现为task_struck结构
  • 有独立的存储空间

三类型

  • 交互进程 : 由shell 启动的进程,可以在前台运行,也可以在后台运行
  • 批处理进程: 这种进程和终端没有联系,是一个进程序列
  • 监控进程: Linux 系统启动时启动的进程,并在后台运行

作业和进程都是在操作系统执行的程序,但作业不是程序。

一个正在执行的进程称为一个作业,而作业可以包含一个或多个进程

作业控制:控制正在运行的进程的行为。

进程+作业控制 = 作业

要创建一个进程,系统调用fork派生一个进程。

源进程称为父进程,派生出来的进程称为子进程

子进程是父进程的拷贝,子进程从父进程获取数据段和堆栈段的拷贝

创建成功父进程返回 新子进程pid ,子进程返回 0;失败 返回 -1

fork执行后执行父进程还是子进程不确定, 由内核使用的调度算法决定

fork使用

#include
#include
#include

int main(){
    int pid=1;
    pid=fork();
    if(pid==0){ //pid为0,表示为子进程
        printf("我是子进程, 我的pid是:%d\n", getpid());
    }
    else if(pid>0){ //pid>0表示父进程,此时返回值为子进程的pid
        printf("我是父进程,我的pid是: %d\n", getpid());
    }
    else {  //fork 失败
        printf("fork失败");
    }
}

说明: 在执行 pid=fork()前只有一个进程, 执行后就会有两个进程在执行这个程序

Original: https://www.cnblogs.com/wojiuyishui/p/16667788.html
Author: 我就一水
Title: 进程与fork

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578652/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球