我正在维护一些现有的代码
我看到这个片段:
msgsnd( $mQueue, pack("l! a*", length($msg), $msg), 0)
|| ... error handling ...
我想理解对 pack() 的调用作为 msgsnd 的第二个参数。
我找到了msgsend的以下文档
调用 System V IPC 函数 msgsnd 将消息 MSG 发送到消息队列 ID。MSG 必须以本机长整数消息类型开头,后跟实际消息的长度,最后是消息本身。这种打包可以通过 pack("l!a*", $type, $message) 来实现。成功返回真,错误返回假。另请参阅 perlipc 中的 SysV IPC 以及 IPC::SysV 和 IPC::Msg 的文档。
这给出了要打包为 $type 的第二个参数,但没有解释 $type 是什么。我试图理解的代码改为传递消息长度。
这是怎么回事?据我所知,现有代码运行可靠。