You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

while循环如何实现进程等待?表达式ps -p "$pid1,$pid2" | wc -l >1的作用是什么?

C-shell中等待双进程的代码解析

问题1:while循环是如何等待进程的?

这个循环其实就是个“定时巡检小工具”:

  • 每次循环启动时,都会先检查指定的两个进程是否还在运行
  • 只要至少有一个进程还活着,就执行sleep 1让脚本暂停1秒,避免频繁检查占用过多系统资源
  • 1秒后回到循环开头,重复检查动作
  • 直到两个进程都彻底终止,循环条件不成立,才会跳出这个循环,继续执行脚本后续内容

问题2:表达式ps -p "$pid1,$pid2" | wc -l > 1的具体作用是什么?

咱们拆解开每一部分来看:

  1. ps -p "$pid1,$pid2":调用ps命令,通过给定的两个PID($pid1和$pid2)查询对应进程的状态。如果进程还在运行,ps会输出该进程的信息行;如果进程已结束,就不会输出对应行。注意,ps默认会输出一行表头(比如PID TTY TIME CMD),不管有没有存活进程。
  2. | wc -l:通过管道把ps的输出传给wc -l,这个命令的作用是统计输出内容的总行数。
  3. 整个表达式ps ... | wc -l > 1:判断统计出的行数是否大于1:
    • 两个进程都在运行:ps输出表头+两行进程信息,共3行,wc -l返回3,3>1成立,循环继续
    • 只剩一个进程运行:ps输出表头+一行进程信息,共2行,wc -l返回2,2>1成立,循环继续
    • 两个进程都结束:ps只输出表头1行,wc -l返回1,1>1不成立,循环终止

说白了,这个表达式就是用来判断是否还有至少一个目标进程在运行,以此作为循环继续的依据。


内容的提问来源于stack exchange,提问作者Statman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:03:34