第十三章 本地进程间通信(管道) - 用于进程间通信的 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"