这是命令 waitposix,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
wait — 等待进程完成
概要
等待 [PID...]
商品描述
当一个异步列表(见 部分 2.9.3.1, 例子) 由 shell 启动,
异步列表的每个元素中最后一个命令的进程 ID 应为已知
在当前shell执行环境中; 看 部分 2.12, 外壳 执行 环境.
如果 等待 实用程序在没有操作数的情况下被调用,它将等待直到所有进程 ID 已知
调用 shell 已终止并以零退出状态退出。
如果一个或多个 PID 指定代表已知进程 ID 的操作数, 等待
实用程序应等到所有这些都终止。 如果一个或多个 PID 操作数是
指定代表未知进程 ID, 等待 将他们视为已知
以退出状态 127 退出的进程 ID。 等待 效用
应该是最后一个请求的进程的退出状态 PID 操作数。
已知进程 ID 仅适用于调用 等待 在当前外壳中
执行环境。
配置
无。
操作数
应支持以下操作数:
PID 以下情况之一:
1.命令的无符号十进制整数进程ID,实用程序
就是等待终止。
2. 作业控制作业 ID(参见 POSIX.1-2008 的 Base Definitions 卷,
部分 3.204, 工作 系统 工作 ID) 标识后台进程
等待的组。 作业控制作业 ID 表示法仅适用
用于调用 等待 在当前shell执行环境中; 看
部分 2.12, 外壳 执行 环境. 的退出状态 等待 应该
由管道中的最后一个命令确定。
请注意: 作业控制作业 ID 类型 PID 仅在系统上可用
支持用户便携实用程序选项。
标准输入
不曾用过。
INPUT FILES
无。
环境 变数
以下环境变量会影响执行 等待:
朗 为未设置或未设置的国际化变量提供默认值
空值。 (参见 POSIX.1-2008 的基本定义卷, 部分 8.2,
国际化 变量 为国际化优先
用于确定语言环境类别值的变量。)
LC_ALL 如果设置为非空字符串值,则覆盖所有其他字符串的值
国际化变量。
LC_CTYPE 确定用于解释文本数据字节序列的语言环境
作为字符(例如,单字节而不是多字节字符
论据)。
LC_消息
确定应该用于影响格式和内容的语言环境
写入标准错误的诊断消息。
路径 确定用于处理的消息目录的位置 LC_消息.
异步 新闻
默认。
标准输出
不曾用过。
斯特德
标准错误应仅用于诊断消息。
OUTPUT FILES
无。
EXTENDED 商品描述
无。
退出 状态
如果指定了一个或多个操作数,则所有这些操作数都已终止或不为其他人所知
调用 shell,并且指定的最后一个操作数的状态是已知的,然后退出
状态 等待 应该是最后一个指示的命令的退出状态信息
指定的操作数。 如果进程因为收到信号而异常终止,
退出状态应大于 128 且应与退出状态不同
由其他信号生成,但未指定确切值。 (见 杀 -l 选项。)
否则, 等待 实用程序应以以下值之一退出:
该0 等待 实用程序在没有操作数和所有进程 ID 的情况下被调用
调用 shell 已终止。
1-126 等待 实用程序检测到错误。
第127回 PID 指定的操作数未知。
后果 OF 错误
默认。
这款 以下 部分 旨在 内容丰富。
申请须知 用法
在大多数实现中, 等待 是一个内置的shell。 如果在子shell中调用它或
单独的实用程序执行环境,例如以下之一:
(等待)
诺哈普 等待 ...
发现 . -执行 等待 ... \;
它立即返回,因为在那些中没有已知的进程 ID 等待
环境。
交互式 shell 的历史实现已经丢弃了
在每个 shell 提示之前终止后台进程。 因此,状态
后台进程通常会丢失,除非它终止而 等待 正在等待它。
当预期运行很长时间的作业时,这可能是一个严重的问题
由于退出状态,语法或初始化错误实际上很快终止
如果未找到请求的进程 ID,则返回值通常为零。 这个体积
POSIX.1-2008 要求实现以保持已终止作业的状态可用
直到请求状态,以便脚本如下:
j1&
p1=$!
j2&
等待 $p1
回音 工作 1 退出 - 状态 $?
等待 $!
回音 工作 2 退出 - 状态 $?
工作而不会失去任何工作的地位。 允许外壳丢弃状态
任何进程,如果它确定应用程序无法获得该进程 ID
从 shell 处理。 还需要只记住 {CHILD_MAX} 个
以这种方式处理。 由于从 shell 获取进程 ID 的唯一方法是使用
此 '! shell 参数,允许 shell 丢弃异步状态
列出如果 “$!” 在另一个异步列表启动之前没有被引用。 (这意味着
shell 只需要保持最后一个异步列表的状态,如果
申请没有参考 “$!”. 如果shell的实现足够聪明
确定引用 “$!” 未保存在应用程序可以访问的任何位置
稍后检索它,它可以使用此信息来修剪已保存信息的列表。 笔记
也成功调用 等待 没有操作数丢弃所有的退出状态
异步列表。)
如果退出状态为 等待 大于 128,应用程序无法
知道等待的进程是否以该值退出或被信号杀死。 自从
大多数实用程序以小值退出,很少有任何歧义。 即使在
模棱两可的情况,大多数应用程序只需要知道异步作业失败; 它
不管它是检测到错误并失败还是被杀死并且没有完成
它的工作正常。
示例
虽然进程被信号终止时使用的确切值未指定,但如果
众所周知,一个信号终止了一个进程,脚本仍然可以可靠地确定
使用哪个信号 杀 如以下脚本所示:
睡觉 1000&
pid=$!
杀 -杀死 $pid
等待 $pid
回音 $pid 是 终止 by a SIG$(杀死 -l $?) 信号。
如果以下命令序列在不到 31 秒内运行:
睡觉 257 | 睡觉 31 &
工作 -l %%
以下任一命令返回第二个的退出状态 睡觉 ,在
管道:
等待 <pid of 睡觉 31>
等待 %%
基本原理
的描述 等待 不指 等待进程() 函数来自系统
POSIX.1-2008 的接口卷,因为那会不必要地过度指定这个
界面。 然而,措辞意味着 等待 需要等待明确的
process 当它被赋予一个参数以便其他进程的状态信息是
未消耗。 历史实现使用 等待() 函数定义在 System
POSIX.1-2008 之前的接口量 等待() 返回请求的进程 ID 或找到
请求的进程不存在。 因为这意味着 shell 脚本可以
如果曾经有第二份背景工作,则无法可靠地获得所有背景儿童的状态
在第一个工作完成之前开始,建议 等待 实用程序使用
方法,例如提供的功能 等待进程() 功能。
能够等待多个 PID 操作数是从 KornShell 中采用的。
添加此新功能是因为需要确定任何退出状态
异步列表准确。 此更改造成的唯一兼容性问题是
对于像这样的脚本
而 睡觉 60 do
工作& 回音 工作 开始 $(日期) as $! 完成
这会导致 shell 监视所有已启动的作业,直到脚本终止或
内存不足。 如果循环没有引用,这将不是问题 “$!” 或者如果
脚本偶尔会 等待 对于它开始的工作。
未来 如何前往
无。
使用 onworks.net 服务在线使用 waitposix