首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【linux】进程创建与进程终止

01.进程创建 #include pid_t fork(void); 返回值:自进程中返回0,父进程返回子进程id,出错返回-1 进程调用fork,当控制转移到内核中的fork代码后...,内核做: 分配新的内存块和内核数据结构给子进程 将父进程部分数据结构内容拷贝至子进程 添加子进程到系统进程列表当中 fork返回,开始调度器调度 写时拷贝 02.进程终止 首先想清楚,终止是做什么...,父进程获取到的是最近一个子进程退出的退出码,前面我们提到,echo是内建命令,打印的都是bash内部的变量数据 父进程bash为什么要得到子进程的退出码呢?...进程出异常,本质是因为进程收到了OS发给进程的信号! 段错误,OS提前终止进程 我们可以看进程退出的时候,退出信号是多少,就可以判断我的进程为什么异常了! ! !...使用场景主要是在创建子进程后,子进程完成任务立即退出时,或者在程序遇到无法恢复的错误需要立即终止时使用。 使用 exit() 当你需要正常终止程序,并且需要清理资源(如关闭文件、保存状态等)。

10110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux下创建新进程

    Linux的下是由父进程来完成的,创建完成的新进程是子进程对于子进程它有两种执行顺序的可能性: 父进程和子进程并发执行; 子进程先执行,父进程等待子进程执行完毕。...在Linux下的fork函数用于创建一个新的进程,使用fork()的函数来创建一个进程时,子进程只是完全复制父进程的资源。这样得到的子进程和父进程是独立的,具有良好的并发性。...Linux的采用了copy-on-write技术(COW),即:只有在子进程中发生写入操作的时候,才真正的去复制父进程的资源,否则不进行复制操作,比如在fork的子进程中只是调用exec函数来执行另外一个可执行文件...从运行结果可以看到,父子进程的PID是不同的,说明我们确实创建了一个进程。另外父子进程中的变量是独立的,这也说明了子进程是父进程的复制。当然,这样带来的坏处是进程间的通信必须使用专门的通信机制。...除了fork之外,Linux的系统还提供了vfork的函数来建立一个新进程.vfork建立的新进程和fork的不同之处在于: vfork创建的子进程和父进程是共享地址空间的,而不是复制,因此子进程中的数据和父进程中的数据是共享的

    2.1K10

    Linux进程——进程的创建(fork的原理)

    查看进程的第二种方法 在Linux系统中,不只有ps能够查看进程,还存在着一个动态目录proc,该目录存放了所有存在的进程,目录的名称。它会随着进程的改变而随时更新它的内容!...创建子进程 2.1 系统调用函数fork 在Linux中,进程的创建方式有两种: 命令行中直接启动进程 通过代码创建 而在用代码创建进程时,实则是进行了系统调用,这里我们就得在学习一个系统调用函数...fork创建子进程,系统中会多一个子进程 以父进程为模板,为子进程创建PCB 但是你今天创建的子进程,是没有代码和数据的!!!目前和父进程共享代码和数据!!...分析父子进程是否独立 由此,我们可以得出结论:进程之间运行的时候,是具有独立性的,杀掉父进程不会影响子进程!反之也是!...进程的独立性,首先是表现在有各自的PCB进行之间不会互相影响,代码本身是只读的,不会影响,数据父子是会修改的!代码共享,数据各个进程都会写时拷贝私有一份!

    30611

    【Linux】进程详解:进程的创建&终止&等待&替换

    前言 之前在这两篇文章中 【Linux】进程管理:状态与优先级调度的深度分析 【Linux】进程详解:命令行参数、环境变量及地址空间-CSDN博客 我们已经了解过了进程的基本概念,这一章我们要进一步的学习进程...而他们之间最大的区别就在于两个进程的PID不同 父进程和子进程是并发执行的独立进程 父进程和子进程有相同但是独立的地址空间,后面会讲到其实父进程和子进程在虚拟地址层面上地址空间是一样的,但是它们都有自己独立的物理地址空间...而一旦被创建出来一个独立的进程就会有返回值,所以调用这个fork()函数的父进程有一个返回值,而创建出的子进程也会有一个返回值 因为这两个过程是在fork()函数内部就已经完成了,因此我们在fork...(进程的独立性)详情如下: 一开始创建子进程的时候,子进程和父进程的代码和数据共享,即相同的虚拟地址会映射到相同的物理地址空间。 当任意一方试图写入,便以写时拷贝的方式各自一份副本。...这样父子进程中的数据就独立了(进程独立性) 对于写时拷贝,有三个问题要注意: 为什么要进行写时拷贝❓ 进程具有独立性。

    38810

    Linux:进程地址空间、进程控制(一.进程创建、进程终止、进程等待)

    每个进程都有自己独立的地址空间,使得多个进程可以同时运行而互相不干扰 地址空间是指一个进程可以使用的内存范围,通常由连续的地址组成。...进程包含了程序的代码、数据、堆栈等信息,以及操作系统为其分配的资源。每个进程都有自己独立的地址空间和执行流,可以独立运行、调度和管理。进程是操作系统中的基本执行单位,是程序在执行过程中的动态体现。...解耦进程管理和内存管理: 地址空间和页表的存在使得进程管理和内存管理可以相互独立地进行,进程的创建、销毁和切换与物理内存的分配、回收和调度等操作是相互独立的。...同时,地址空间的隔离性保证了每个进程都拥有独立的地址空间,互不干扰,确保了系统的稳定性和安全性。...3.创建进程 3.1fork()函数创建子进程补充 我们之前已经讲了在代码里可以使用fork()函数来。

    16300

    【Linux】进程控制:理解什么是进程创建,进程终止,进程等待 | 进程替换

    一.进程创建 fork函数创建进程,新进程为子进程,原进程为父进程; fork函数包含在头文件 进程调用fork,当控制转移到内核中的fork代码后,内核做: 分配新的内存块和内核数据结构给子进程...将父进程部分数据结构内容拷贝至子进程 添加子进程到系统进程列表当中 fork返回,开始调度器调度 关于fork函数的返回值: 返回0给子进程 返回子进程的PID给父进程 创建失败,返回值 < 0 子进程和父进程共享...因为进程之间具有独立性。...进程替换的原理: 进程在替换时,只会替换掉物理内存中原来程序的代码和数据,其它的并不会动,且调用exec并不创建新进程,所以调用exec前后该进程的id并未改变。...因为创建子进程的时候,环境变量已经被子进程继承下去了,所以进程替换不会替换环境变量。

    33810

    【Linux】进程控制(创建、终止、等待)

    环境:centos7.6,腾讯云服务器 Linux文章都放在了专栏:【Linux】欢迎支持订阅 相关文章推荐: 【Linux】冯.诺依曼体系结构与操作系统 【Linux】进程理解与学习Ⅰ-进程概念...【Linux】进程理解与学习Ⅱ-进程状态 【Linux】进程理解与学习Ⅲ-环境变量 【Linux】进程理解与学习Ⅳ-进程地址空间 浅谈Linux下的shell--BASH 【Linux】进程优先级...进程创建 再谈fork函数 #include pid_t fork(void); 返回值:创建子进程成功后,给子进程返回0,父进程返回子进程的pid,出错返回-1 pid_t...当调用fork函数之前,父进程独立运行,调用fork之后,会执行两个执行流,即父子进程共享fork函数之后的代码。...我们在Linux下可以通过echo $?指令查看最近的进程的退出码。 ​

    3.5K40

    Linux创建进程达到65535的方法

    Linux上创建进程据说消耗很少,这个一直是Linux的特点,于是就专门测试Linux创建进程的极限,测试代码如下: //fork.c #include  #include 创建65535个进程,如果无法创建,就打印出错误。...blue帐户创建进程数的硬限制和软限制都是65535,但是我们还不能使用blue帐户创建65535个进程,我们在Linux还需要设置内核参数kernel.pid_max,这个参数我默认安装都是32768.../fork 我的虚拟机Linux内存是512M,在创建6千多个进程时,程序运行得很慢,通过vmstat命令观察,发现swap内存的置入置出很频繁,可以判断是由于内存不足,使用虚拟内存,导致频繁的IO操作...测试代码中,创建的子进程,占用的内存相当小,实际使用中,只可能比测试代码创建的进程使用更多的内存,所以相应的,同样配置的机器,能创建的可用进程应该是更少的。

    1.7K20

    Linux进程控制【创建、终止、等待】

    ---- 前言 进程 创建后,需要对其进行合理管理,光靠 OS 是无法满足我们的需求的,此时可以运用 进程 控制相关知识,对 进程 进行手动管理,如创建 进程、终止 进制、等待 进程 等,其中等待 进程...可以有效解决僵尸 进程 问题 汽车的中控台,可以对汽车进行各种操作 ---- ️正文 本文涉及的代码都是以 C语言 实现的 1、进程创建 在学习 进程控制 相关知识前,先要对回顾如何创建 进程...下,创建一个 子进程,子进程 创建后,会为其分配新的内存块和内核数据结构(PCB),将 父进程 中的数据结构内容拷贝给 子进程,同时还会继承 父进程 中的环境变量表 进程具有独立性,即使是父子进程,也是两个完全不同的进程...,退出 } 观察结果不难发现,两个子进程已经成功创建,但最晚创建的进程,总是最先运行,这是因为 fork 创建进程后,先执行哪个进程取决于调度器 得到子进程后,此时可以在一个程序中同时执行两个进程...---- 总结 以上就是关于 Linux进程控制(创建、终止、等待) 的相关知识了,我们学习了 子进程 是如何被创建的,创建后又是如何终止的,以及 子进程 终止 父进程 需要做些什么,有了这些知识后,

    32710

    Linux:进程的创建、终止和等待

    一、进程创建 1.1 fork函数初识 #include pid_t fork(void); 返回值:子进程中返回0,父进程返回子进程id,出错返回-1  调用fork函数后,内核做了下面的工作...: 1、创建了一个子进程的PCB结构体、并拷贝一份相同的进程地址空间和页表(PCB结构体中的一个指针指向该空间) 2、子进程和父进程起初共享代码和数据,并且页表中的虚拟地址和物理地址的映射关系是一样的,...——>用全局变量的话,因为进程具有独立性!!所以子进程再怎么去改自己的status,父进程都看不到!...,没等待完一个子进程就去统计一下 2、创建很多的子进程,但是具体哪个先去执行是由调度器决定的,但是我们必须知道的就是最后一个结束的必然就是父进程,因为子进程都是他创建的,所以他理所应当去回收所有的子进程...  3、进程最重要的三个核心:进程创建、进程等待、进程终止。

    20110

    Linux进程创建参数标志位-Cloneflags

    在Linux世界中,clone()系统调用通过复制调用进程创建一个新进程。新进程称为子进程,原始进程称为父进程。clone()系统调用有几个选项,允许我们控制父进程和子进程之间资源的共享。...Cloneflags是一个用于指定创建 Linux 命名空间的标志位, 是 Linux 内核中用于进程创建的参数之一,它用于控制新进程如何与父进程共享资源。...CLONE_NEWUTS:使新进程拥有一个新的、独立的 UTS 命名空间,可以隔离主机名和域名。...CLONE_NEWNET:使新进程拥有一个新的、独立的网络命名空间,可以隔离网络设备、协议栈和端口。 CLONE_NEWPID:使新进程拥有一个新的、独立的 PID 命名空间,可以隔离进程 ID。...CLONE_SIGHAND:使新进程共享信号处理程序。 CLONE_THREAD:使新进程成为调用进程的线程,与父进程共享进程 ID 和资源,但拥有独立的栈。

    23510

    linux内核进程创建fork源码解析

    平时写过多进程多线程程序,比如使用linux的系统调用fork创建子进程和glibc中的nptl包里的pthread_create创建线程,甚至在java里使用Thread类创建线程等,虽然使用问题不大...这次在自己写操作系统的时候,看了一遍linux内核的进程创建过程。算是有了比较深入的理解。     进程概念:进程是对正在运行程序的一个抽象。...一个标准的线程由线程ID,当前指令指针,寄存器集合,堆栈等,线程创建速度快,因为线程和所属进程共享资源,避免了资源复制和重新创建的开销。...group_leader是新进程本身,pgid是当前进程(创建子进程的进程)的pgid,tgid是新进程本身,parent是当前进程(创建子进程的进程)。...如果创建是的线程则group_leader是当前进程(创建线程的进程)的group_leader,pgid是当前进程的pgid,tgid是当前进程的tgid,parent是当前进程的parent。

    8.8K22

    Linux进程初识:OS基础、fork函数创建进程、进程排队和进程状态讲解

    每一次启动进程的pid几乎都会变化,因为我的进程是一个新的进程! 一般在Linux中,普通进程,都有他的父进程!...在‌父进程中‌,fork函数返回新创建子进程的进程ID。这是因为父进程需要通过这个返回值来跟踪和管理其创建的子进程。 在‌子进程中‌,fork函数返回0。...调用fork函数,会返回不同的值分别给父子进程 父子进程执行不同的代码块 3、这里的id为什么会同时满足 == 0 又满足>0呢? 这是因为有两个进程,进程之间是具有独立性的,互相不能影响!...决定了你的后续动作,Linux中可能会存在多个进程都要根据它的状态执行后续动作(进程开始排队了!)...相当于给进程一个免死金牌,我们要知道在Linux环境下,在操作系统逼急的时候,是会杀掉进程!如果这个进程很重要,就会造成很大的损失,因此这个D状态就相当于给了进程一个免死金牌,不会被进程所杀掉。

    14710

    Linux之创建进程、查看进程、进程的状态以及进程的优先级

    前言 本文介绍了创建进程、查看进程、进程的状态以及进程的优先级相等关概念 一、初识fork 通过系统调用fork创建子进程。...如果推广父进程创建了很多子进程,但是不回收,是不是就会造成内存资源的浪费(内存泄漏)?...独立性: 多进程运行需要独享各种资源,多进程运行期间互不干扰。 并行: 多个进程在多个CPU下,同时进行运行,这称之为并行。...2.查看系统进程 在Linux/Unix系统中,用ps -la命令可以查看进程的信息。...4.修改进程的优先级 在Linux中修改进程的优先级是通过修改PRI和NI。也就是说,进程的优先级是受到nice值的影响的,但是默认情况下nice值为0.

    53930

    linux~~监控子进程&创建新的线程

    wait函数的返回值就是-1; 2.wait函数演示 创建3个子进程,分别是5,10,15s之后结束,查看这个父进程等待的情况以及wait函数的返回值的情况; 下面将会通过代码实现这个过程:我们创建一个已知的进程...,我们可以称之为父进程,这个父进程创建了三个子进程,分别给这三个子进程创建休眠的时间,5s,10s,15s等等; 这个时候的main函数里面设置了相关的参数,其中这个里面的第一个参数就是argc,这个参数的意义就是我们的...我们上面的这个过程也可以说明一个问题: 因为这个多个线程是并发执行的,就是同一个变量,两个线程之间是可以相互看到的,但是对于两个进程而言,如果也是同一个变量,两个进程之间是相互独立的,一个进程对于另外一个进程没有影响...,但是两个线程之间就不是独立的,他们可以共用一块空间,不然这个变量的数值怎么会连续增加呢?...因此,我们也可以看出来,这个线程之间想要保持通信其实并不难,因为他们的空间是一样的,但是对于进程而言,因为进程运行具有独立性,因此这个进程之间想要保持独立性,就没有线程之间那么简单!

    3700

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券