第十三章 本地进程间通信(管道) - 用于进程间通信的 READ 命令
第十三章 本地进程间通信(管道) - 用于进程间通信的 READ 命令
用于进程间通信的 READ 命令
语法
READ:pc readargument,...
READ 从管道读取数据。
其中reargument可以是:
formatting-mode
string
variable:timeout
*variable:timeout
variable#n:timeout
将 I格式化模式参数与管道一起使用。 I 参数允许对命名管道发出定时READ,而不会丢失跟随在一个部分记录中的任何数据。错误。当在READ上使用此参数时, READ会忽略消息。
默认情况下,I格式化模式的值处于关闭状态。如果在没有超时的情况下在READ命令中包含此参数,则进程将挂起,直到有数据要处理。
CPIPE 退出代码
可以检索命令管道 (|CPIPE|) 进程的退出代码。必须在 |CPIPE| 之前检索此退出代码设备已关闭。它是通过%SYSTEM.Process 类的PipeExitCode方法获得的。退出代码始终是整数值。如果退出代码不可用,该方法将返回空字符串并设置状态参数和解释,如以下示例所示:
SET exitcode=$SYSTEM.Process.PipeExitCode(device, .status)
IF exitcode="" {DO $SYSTEM.OBJ.DisplayError(status)}
ELSE {WRITE "CPIPE exit code is ",exitcode }
在 UNIX® 系统上,退出代码仅适用于非 shell 命令;即,使用 /COMMAND 或 /ARGS 打开的 CPIPE 设备。
用于进程间通信的 CLOSE 命令
如果使用带Q (/QUEUE) 参数代码的OPEN创建子进程,则该子进程可能会在设备上的CLOSE操作中继续存在。排队的进程间通信管道的生存能力取决于平台。在 UNIX® 系统上,子进程始终在CLOSE后继续存在。在 Windows 系统上,进程的生存取决于进程的年龄。刚刚启动的子进程不会在CLOSE操作中幸存,但是一旦子进程完全建立,它就会在 CLOSE操作中幸存。
在 UNIX® 系统上,可以指定关闭管道命令设备时CLOSE命令应等待的时间。超时默认值为 30 秒。可以通过指定OPEN命令closetimeout位置参数来修改此默认值。可以通过指定可选的“I”位置参数来覆盖CLOSE命令的默认或指定超时。 “I”参数指定立即关闭(1 秒后关闭)。 CLOSE语法如下:
CLOSE cpipename:"I"