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

对子进程的Bash等待即使在子进程仍在运行时也会返回

,这是因为Bash中的等待命令(wait)会使当前进程暂停执行,直到指定的子进程结束。无论子进程是否仍在运行,等待命令都会立即返回。

等待命令通常与后台运行的子进程一起使用,以确保在继续执行其他命令之前,子进程已经完成。等待命令的语法如下:

wait PID

其中,PID是要等待的子进程的进程ID。如果未指定PID,则等待命令将等待所有子进程的结束。

等待命令的应用场景包括:

  1. 后台任务管理:当在Bash中启动后台任务时,可以使用等待命令等待任务的完成,以便在任务完成后执行其他操作。
  2. 并行任务控制:在并行执行多个子任务时,可以使用等待命令等待所有子任务的完成,以便在所有任务完成后进行下一步操作。
  3. 进程间通信:等待命令可以与其他进程间通信机制(如管道、共享内存等)结合使用,以实现进程间的同步和互斥。

腾讯云提供了一系列与云计算相关的产品,包括云服务器、云数据库、云存储、人工智能等。具体推荐的产品和产品介绍链接地址如下:

  1. 云服务器(ECS):提供弹性计算能力,支持多种操作系统和应用场景。了解更多:https://cloud.tencent.com/product/cvm
  2. 云数据库(CDB):提供高性能、可扩展的数据库服务,支持多种数据库引擎。了解更多:https://cloud.tencent.com/product/cdb
  3. 云存储(COS):提供安全可靠的对象存储服务,适用于各种数据存储和传输场景。了解更多:https://cloud.tencent.com/product/cos
  4. 人工智能(AI):提供多种人工智能服务,包括图像识别、语音识别、自然语言处理等。了解更多:https://cloud.tencent.com/product/ai

以上是腾讯云提供的一些与云计算相关的产品,可以根据具体需求选择适合的产品来支持云计算领域的开发和运维工作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何在Bash等待多个子进程完成,并且当其中任何一个进程以非零退出状态结束时,使主进程返回一个非零退出码?

问题 如何在 Bash 脚本中等待该脚本启动多个子进程完成,并且当这其中任意一个进程以非零退出码结束时,让该脚本返回一个非零退出码? 简单脚本: #!.../bin/bash for i in `seq 0 9`; do calculations $i & done wait 上述脚本将会等待所有 10 个被创建进程结束,但它总会给出退出状态 0...我应该如何修改这个脚本,使其能检测到被创建进程退出状态,并且当任何进程以非零代码结束时,让脚本返回退出码 1?.../usr/bin/env bash # 这是一个特殊 sleep 函数,它将睡眠秒数作为"错误代码" # 或"返回代码"返回,以便我们可以清楚地看到,实际上 # 我们每个进程完成时确实获取了它返回代码...3") num_procs=${#procs[@]} # 数组中元素个数 echo "num_procs = $num_procs" # 作为进程运行命令并把 pid 存储到数组中 pids

5600

【Linux】进程概念与进程状态

另外,同一个程序重新被运行时进程id可能与之前不一样,因为它代码和数据需要重新从磁盘中加载;但是它进程id一定是一样,因为它们都是通过 bash 来执行; 3、通过系统调用创建进程 我们可以通过系统调用接口...\n"); } return 0; } 可以看到,结果和我们预期一样,进程 ppid 是 父进程 pid,父进程 ppid 是 bash,同时,对于父进程,fork 函数返回进程...pid,对于进程,fork 返回 0。...1125之后,由于父进程中没有对子进程退出状态代码进行读取,所以进程变成了 Z 状态,并且进程后面还提示了 defunct (失效,不再使用),此时,如果父进程一直不对不对子进程进行读取,那么子进程就会变成僵尸进程...,bash读取父进程退出状态;第二,进程被领养后变成了后台进程

5.5K00

100个Linux命令(7)-进程管理

cp这个子进程执行过程中,父进程bash进入睡眠状态(不仅是因为cpu只有一颗情况下一次只能执行一个进程,还因为进程等待),并等待被唤醒,此刻bash无法和人类交互。...前台进程执行时,其父进程睡眠,因为cpu只有一颗,即使是多颗cpu,因为执行流(进程等待)原因而只能执行一个进程,要想实现真正多任务,应该使用进程内多线程实现多个执行流。...后台进程 若在执行命令时,命令结尾加上符号"&",它会进入后台。将命令放入后台,立即返回进程,并返回该后台进程jobid和pid,所以后台进程进程不会进入睡眠。...例如: cp /etc/fstab /tmp/ & [1] 8701 将进程放入后台后,立即返回其父进程,一般对于手动放入后台进程都是bash下进行,所以立即返回bash环境。...另外,shell中后台进程终端被关闭时脱离终端,因此不受shell和终端控制。例如shell脚本中后台进程,再如"(sleep 10 &)"。

1.7K20

python—subprocess、gl

像Linux进程那样,一个进程可以fork一个进程,并让这个子进程exec另外一个程序。Python中,我们通过标准库中subprocess包来fork一个进程,并运行一个外部程序。...subprocess.call() 父进程等待进程完成 返回退出信息(returncode,相当于Linux exit code) subprocess.check_call() 父进程等待进程完成...我们必须调用对象wait()方法,父进程才会等待 (也就是阻塞block) 例1(父进程等待进程): #!...child完成,而是直接运行print 例2(父进程等待进程): #!...child2输出文本被存放在PIPE中,直到communicate()方法从PIPE中读取出PIPE中文本;communicate()是Popen对象一个方法,该方法会阻塞父进程,直到进程完成

1.5K20

初探PHP多进程

此函数创建了一个新进程后,进程继承父进程当前上下文,和父进程一样从pcntl_fork()函数处继续向下执行,只是获取到pcntl_fork()返回值不同,我们便能从判断返回值来区分父进程进程...)返回值大于1来确实当前进程是父进程; 而在进程中,此函数返回值会是固定值0,我们可以通过判断pcntl_fork()返回值为0来确定子进程; 而pcntl_fork()函数执行失败时,会在父进程返回...分发信号处理器 我们通过进程接收进程传来信号,判断进程状态,来对子进程进行管理。...callback函数对子进程处理; 处理进程 对子进程处理方法有: posix_kill():此函数并不能顾名思义,它通过向进程发送一个信号来操作进程需要要时可以选择给进程发送进程终止信号来终止进程...; pcntl_waitpid():等待返回fork进程状态,如果指定进程在此函数调用时已经退出(俗称僵尸进程),此函数将立刻返回,并释放进程所有系统资源,此进程可以避免进程变成僵尸进程

1.5K80

Linux进程基础

bash 23774 16939 ps -o pid,ppid,cmd 我们可以看到,第二个进程bash是第一个进程sudo进程,而第三个进程ps是第二个进程进程。...这个函数会有两次返回,将进程PID返回给父进程,0返回进程。实际上,进程总可以查询自己PPID来知道自己进程是谁,这样,一对父进程进程就可以随时查询对方。...由此,就可以进程建立之后,让它执行与父进程不同功能。...在这个信息里,解释该进程为什么退出。父进程得知进程终结时,有责任对该进程使用wait系统调用。这个wait函数能从内核中取出进程退出信息,并清空该信息在内核中所占据空间。...当然,一个糟糕程序完全可能造成进程退出信息滞留在内核中状况(父进程对子进程调用wait函数),这样情况下,进程成为僵尸(zombie)进程。当大量僵尸进程积累时,内存空间会被挤占。

5K40

Linux进程基础

-bash 23774 16939 ps -o pid,ppid,cmd 我们可以看到,第二个进程bash是第一个进程sudo进程,而第三个进程ps是第二个进程进程。...这个函数会有两次返回,将进程PID返回给父进程,0返回进程。实际上,进程总可以查询自己PPID来知道自己进程是谁,这样,一对父进程进程就可以随时查询对方。...由此,就可以进程建立之后,让它执行与父进程不同功能。...在这个信息里,解释该进程为什么退出。父进程得知进程终结时,有责任对该进程使用wait系统调用。这个wait函数能从内核中取出进程退出信息,并清空该信息在内核中所占据空间。...当然,一个糟糕程序完全可能造成进程退出信息滞留在内核中状况(父进程对子进程调用wait函数),这样情况下,进程成为僵尸(zombie)进程。当大量僵尸进程积累时,内存空间会被挤占。

1.1K50

【Linux】进程理解与学习(Ⅱ)

★简单总结 进程pcb可以被维护不同队列 阻塞:进程因为等待某种资源,而导致不推进状态(pcb会到某种资源等待队列下排队,等资源就绪时再被维护到运行队列,等待调度) cpu调度一般是一种线性调度...僵尸状态(Z) 返回代码 我们每一个进程结束时都会有一个退出码,就好像我们写一个main函数时,最后都会加上return 0,return 0就表示该进程正常返回(事实上就算我们不写return 0,系统默认...指令来查看该进程返回代码) vs下编译后返回代码 僵尸状态(Z) 僵尸状态是指一个进程结束时,它返回代码没有被父进程读取,那么该进程一直处于一种僵尸状态,等待进程读取,直到父进程读取返回结果后...暂停状态实际上也是阻塞(要等待你发出指令继续运行) 僵尸状态是指进程退出时,退出结果没有被父进程读取,进程就会保持僵尸状态,直到父进程读取返回结果,才彻底结束。...(假如没有被领养的话,进程退出结果就不会有人能拿到,那么子进程就成了僵尸,一直存在,造成内存泄漏。这是OS不允许,所以让1号进程成为进程进程,从而拿到进程退出结果)。

57830

Linux进程基础

-bash   23774 16939 ps -o pid,ppid,cmd   我们可以看到,第二个进程bash是第一个进程sudo进程,而第三个进程ps是第二个进程进程。   ...这个函数会有两次返回,将进程PID返回给父进程,0返回进程。实际上,进程总可以查询自己PPID来知道自己进程是谁,这样,一对父进程进程就可以随时查询对方。   ...由此,就可以进程建立之后,让它执行与父进程不同功能。   ...在这个信息里,解释该进程为什么退出。父进程得知进程终结时,有责任对该进程使用wait系统调用。这个wait函数能从内核中取出进程退出信息,并清空该信息在内核中所占据空间。...当然,一个糟糕程序完全可能造成进程退出信息滞留在内核中状况(父进程对子进程调用wait函数),这样情况下,进程成为僵尸(zombie)进程

2.5K30

探索进程控制第一弹(进程终止、进程等待

进程必须知道子进程pid,方便后续对子进程进行标识,进而进行管理;进程需要通过返回0,来看是否创建成功。 fork常规用法 一个父进程希望复制自己,使父子进程同时执行不同代码段。...释放内核数据结构时,PCB延迟释放。 进程终止情况 代码跑完,结果正确/不正确 main函数返回值是100,通过echo ?查询。系统中有一个变量叫做?,查看这个变量使用?...父进程为什么知道子进程退出码?父进程要知道子进程退出情况(失败了还是成功了,失败原因是什么),bash反馈给用户。...进程等待 概述 什么是进程等待? 任何进程退出情况下,一般必须要被父进程等待进程退出时候,如果父进程不管不顾,退出进程,处于僵尸状态(Z),存在内存泄漏。 为什么?...进程本身是软件,父进程本质是等待某种软件就绪。 进程等待本质是将进程PCB列入等待队列。那么如何理解父进程阻塞等待进程

11310

【Linux】进程排队理解&&进程状态表述&&僵尸进程和孤儿进程理解

一、进程排队理解  进程不是一直运行进程可能会在等待某种软硬件资源。即使进程加载到CPU中,不是一直运行。...当一个进程想要被CPU调度运行时,它对应代码和数据势必要加载到内存当中。...D磁盘休眠状态(Disk sleep)有时候叫不可中断睡眠状态/深度睡眠(uninterruptible sleep):在这个状态进程通常会等待IO结束,处于D状态进程系统资源吃紧时候不会被操作系统杀死...如果父进程不读取,那么这个僵尸状态进程一直存在,会引起内存泄漏,造成系统资源浪费。 为什么我们之前进程没有见过处于Z状态呢?...那是因为以前我们创建进程进程都是bashbash一瞬间自动读取进程退出状态,不需要我们手动读取。而我们自己创建进程需要我们自己读取它退出状态。

13810

《Linux操作系统编程》 第六章 Linux中进程监控: fork函数使用,以及父子进程关系,掌握exec系列函数

fork(void); ▪ 返回值: - fork函数被正确调用后,可能会在进程中或父进程中分别返回 - 进程返回值为0(不合法PID,提示当前运行在进程中) - 进程返回值为进程ID...每次读文件时,连续地读出若干条记录,这样在下次读文件时就可以直接从内存缓冲区读取;同样,每次写文件时候仅仅是写入内存缓冲区,等满足了一定条件(如达到了一定数量或遇到特定字符等),再将缓冲区中内容一次性写入文件...6.5 Linux中进程等待 6.5.1 Linux中进程等待 (1) wait函数 ▪ 功能:获取任意进程状态改变信息(如果是终止状态则对子进程进行善后处理) ▪ 函数原型 - 头文件:sys...- options:可以为0,可以是以下常量 - WNOHANG:如果没有任何已经终止进程则马上返回, 函数不等待,此时返回值为0 - WUNTRACED:用于跟踪调试 ▪ waitpid特有的功能...waitpid函数pid参数怎样设置表示等待任一进程终止? 答:pid设置为 -1代表等待任意进程状态改变(同wait)。 4.Linux中什么情况下使用exec函数簇?

14210

【Linux】进程控制

上面三种进程退出方法都是正常退出,但除了正常退出,进程异常退出,比如 Ctrl C 终止进程,或者程序中遇到除0,野指针,空指针解引用等问题: ---- 三、进程等待 1、为什么要进行进程等待...;进而就会造成内存泄漏; 所以,我们需要父进程对子进程进行 进程等待,获取进程退出信息,并让操作系统回收进程资源 (释放进程 PCB)。...S,之后进程运行5s退出,此时由于父进程还要休眠5s,所以没有对子进程进行进程等待,所以进程变成僵尸状态 D;5s过后,父进程使用 wait 系统调用对子进程进行进程等待,所以进程由僵尸状态变为彻底死亡状态...当父进程执行到 waitpid 函数时,如果子进程未退出,父进程直接读取进程状态并返回,然后接着执行后面的语句,不会等待进程退出。...轮询 轮询是指父进程非阻塞式状态前提下,以循环方式不断对子进程进行进程等待,直到进程退出。

4K00

孤儿进程和僵尸进程概念及进程回收(wait函数及waitpid函数)

一.孤儿进程 孤儿进程可以理解为一个进程进程英年早逝(父进程先于进程退出),就将这样一个进程称为孤儿进程linux操作系统上。...所以实际编程中,避免和防范僵尸进程产生显得尤为重要。 三.进程回收 (1)回收僵尸进程资源,一种比较暴力做法是将其父进程杀死,那么子进程资源将被回收。...返回值:如果为-1,回收失败,已经没有进程可以回收了。 如果 > 0,返回值为进程对应pid。 参数:进程退出状态,是一个传出参数。.../*wait函数是阻塞函数,等到进程结束回收资源*/ pid_t dpid = wait(NULL);//对子进程退出状态不关心 printf("...(3)pid == 0,等待其组ID等于调用进程组ID任一进程。 (4)pid < -1,等待其组ID等于pid绝对值任一进程

94920

Shell小结

同时,bash能完成简单算术运算,格式如下: $[expression] 例如:var1=2 var2=$[var1*10+1] 则:var2值为21。...8.命令分组 shell中有两种命令分组方法:“()”和“{}”,前者当shell执行()中命令时将再创建一个新进程,然后这个子进程去执行圆括弧中命令。...当用户执行某个命令时不想让命令运行时对状态集合(如位置参数、环境变量、当前工作目录等)改变影响到下面语句执行时,就应该把这些 命令放在圆括弧中,这样就能保证所有的改变只对子进程产生影响,而父进程不受任何干扰...#调用进程 ret=`exec ./wait.sh` #输出进程返回值 echo $?...4.wait 功能:是shell等待在后台启动所有进程结束。Wait返回值总是真。 #!/bin/bash eval ./wait.sh & wait 5.

30130

什么是PHP7中孤儿进程与僵尸进程

基本概念 我们知道unix/linux中,正常情况下,进程是通过父进程创建进程创建新进程进程结束和父进程运行是一个异步过程,即父进程永远无法预测进程 到底什么时候结束。...每当出现一个孤儿进程时候,内核就把孤 儿进程进程设置为init,而init进程循环地wait()它已经退出进程。...任何一个进程(init除外)exit()之后,并非马上就消失掉,而是留下一个称为僵尸进程(Zombie)数据结构,等待进程处理。这是每个 进程结束时都要经过阶段。...pcntl_wait() 函数: 这个函数作用就是 “ 等待或者返回进程状态 ”,当父进程执行了该函数后,就会阻塞挂起等待进程状态一直等到进程已经由于某种原因退出或者终止。...但是即便这样修改,细心想的话还是会有个问题,那就是进程结束后,进程执行pcntl_waitpid()回收前,有五秒钟时间差,在这个时间差内,php child process将会是僵尸进程

86430

如何创建多进程程序?(文末福利)

或者说如何编写多进程程序呢? 什么时候需要fork进程 一种可能见到场景是服务器程序中,一个请求到来后,为了避免服务器阻塞,fork出一个进程处理请求,父进程仍然继续等待请求到来。...但这种方式无疑开销稍大。 另一种最常见就是执行一个不同程序,例如我们shell终端执行一条命令,实际上就是bash(或者其他)调用fork之后,执行exec族函数。...fork函数原型如下: #include pid_t fork(void); 如果调用成功,它将返回两次,进程返回值是0;父进程返回是非0正值,表示进程进程id;如果调用失败将返回...fork之后返回值不同,进程ID不同 进程未处理信号设置为空 进程不继承父进程设置文件锁 一般进程执行与父进程不完全一样代码流程 … 总结 fork用于创建进程,但是需要注意是,进程继承了很多父进程东西...,还需要对子进程状态进行“监控”,否则会出现其他意想不到问题。

1.6K20

探索Linux下进程状态 | 僵尸进程 | 孤儿进程

S睡眠状态(sleeping): 意味着进程等待事件完成(这里睡眠有时候叫做可中断睡眠(interruptible sleep))。...当进程退出并且父进程(使用wait()系统调用,后面讲)没有读取到进程退出返回代码时就会产生僵死(尸)进程 僵死进程以终止状态保持进程表中,并且一直等待进程读取退出状态代码。...,自己进程task_struct记录自己退出信息,未来让父进程来进行读取。...如果没有父进程读取,僵尸进程一直存在。 上述代码中,进程执行完五次后,就处于Z状态并且后面跟了一个,该单词有不存在意思,只不过还等待进程来回收它资源。...父进程也是bash进程,父进程结束后,它进程bash会将它回收掉,并且过程很快,所以父进程不会处于僵尸状态。

10810

【Linux】深度解析Linux中几种进程状态

意味着进程等待事件完成(这里睡眠有时候叫做可中断睡眠(interruptible sleep)) D磁盘休眠状态(Disk sleep): 有时候叫不可中断睡眠状态(uninterruptible...意味着进程等待事件完成(这里睡眠有时候叫做可中断睡眠(interruptible sleep)) 浅度睡眠状态,可以被终止 浅度睡眠会对外部信号做出响应 1.S状态与S+状态 前台进程:带+ 后台进程...Z :僵尸状态(Linux特有状态) 处于僵尸状态进程:僵尸进程 进程结束不会立刻释放,等一小会 当一个进程退出时候,退出信息会由OS写入到当前退出进程PCB中,可以允许进程代码和数据空间被释放...2)孤儿进程引入 进程和父进程运行时,父进程退出了,父进程进入僵尸状态吗? 现象:不会进入僵尸状态,而是直接没了。 原因:父进程也有其父进程bash,会被其立刻回收!...且父进程不对孙子进程负责(即bash不对场景中子进程负责) 进程和父进程运行时,父进程退出了, 进程进入僵尸状态谁来维护它?

53610
领券