第十章 本地进程间通信(管道) - 用于进程间通信的 OPEN 命令
第十章 本地进程间通信(管道) - 用于进程间通信的 OPEN 命令
用于进程间通信的 OPEN 命令
OPEN命令允许程序与 IRIS 外部的进程进行通信。
OPEN Arguments
cpipename 管道名称
仅命令管道— “|CPIPE|”或"|CPIPE|xxxxxx" ,其中xxxxxx表示用户指定的唯一标识符。
program 程序
命令管道可以使用命令 shell 或不使用命令 shell(直接)执行程序。在大多数情况下,首选不使用命令 shell 执行。标准管道使用命令 shell 执行程序。
仅命令管道— 要在不使用命令 shell 的情况下执行,请指定 /COMMAND= program 。如果程序有参数,则必须使用 /ARGS 关键字指定它们。如果指定 /COMMAND 或 /ARGS 关键字,则无需命令 shell 即可执行程序: (/COMMAND=program) 、 (/COMMAND=program:/ARGS=arg1)和(program:/ARGS=arg1)都是有效的语法。 /ARGS 可以采用单个参数、以逗号分隔的参数列表或数组。例如, (/COMMAND=program:/ARGS=arg1,arg2) 。可以使用数组指定可变数量的参数:
SET array(1)=arg1, array(2)=arg2, array=2
OPEN device:(/COMMAND=cmd:/ARGS=array...)
要使用命令 shell 执行,请指定program ,并省略 /COMMAND 和 /ARGS 关键字。
程序字符串包含系统上安装的程序的完整路径名。它包含要在主机系统上执行的命令名称及其参数(如果有)。对于标准管道,限制为 <256 个字符。对于命令管道,最大长度取决于平台,但实质上超过 256 个字符。
parameters 参数
Read 对于标准管道,指定Q或QR以打开队列或管道以接受来自另一个进程的输入。对于命令管道:因为命令管道明确是管道,所以不需要Q字母代码;指定R 。
Write 对于标准管道,指定QW打开队列以将输入发送到另一个进程。对于命令管道:因为命令管道明确是管道,所以不需要Q字母代码;指定W 。
Read and Write 对于可以是读管道或写管道的标准管道,指定QRW以打开队列或管道以接受来自另一个进程的输入并将输入发送到另一个进程。对于命令管道:因为命令管道明确是管道,所以不需要Q字母代码;指定RW 。
可以使用 /关键字参数指定这些参数和其他参数,并用冒号分隔。例如, OPEN "|CPIPE|":(cmd:/READ:/IOTABLE="UTF8") 。以下可选关键字参数通常与管道一起使用:
K/ name /(或K num)以启用I/O转换(如果已在系统范围内启用转换)。可以通过指定表的名称来标识转换所基于的先前定义的表。用于打开和关闭协议的+和-选项不适用于K协议。Y/ name /(或Y num)告诉系统使用命名的$X/$Y操作表。可以通过指定表名称来识别先前定义的$X/$Y操作表(转换所基于的操作表)。$X/$Y操作始终启用。如果未指定Y并且未定义系统默认$X/$Y,则使用内置的$X/$Y操作表。用于打开和关闭协议的+和-选项不适用于Y协议。
可以通过上述参数指定S (流)、 F (固定长度)或U (未定义长度)模式参数。无法指定V (可变长度)模式参数。
closetimeout 关闭超时
可选— 仅限 UNIX®:可以指定关闭管道命令设备时CLOSE命令等待命令进程退出的秒数。默认值为 30 秒。可以通过在进程间通信的 CLOSE 命令上指定“I”(立即)参数来覆盖此关闭超时。
timeout 暂停
可选— 一个正整数,其值(以秒为单位)是 IRIS 等待OPEN成功完成的最长时间。如果 IRIS 能够在超时到期之前打开进程间通信,则会将$TEST设置为 1。如果 IRIS 在超时到期之前无法打开进程间通信,则会将$TEST设置为 0。如果忽略超时或指定0, OPEN立即将控制权返回给进程。