【问题标题】:Message queue function msgsnd with less arguments具有较少参数的消息队列函数 msgsnd
【发布时间】:2017-01-20 05:12:39
【问题描述】:

'msgsnd'函数实际声明如下

int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);

但是,有一个 perl 程序以下列方式使用

msgsnd($qid, pack("l! l! a*", $type, $type, $cmd), 1)

这只有 3 个参数。这是如何工作的?

【问题讨论】:

  • 当为其他语言的库编写 Perl 绑定或实现时,通常会对接口进行更改。通常事情不需要传递,或者如果 Perl 的实现是面向对象的,则可以在幕后传递。但是,这个问题甚至没有提供问题的基本描述。它太宽泛了,没有关注代码问题,而是关注软件库的操作。
  • This 是这样工作的。
  • int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); 看起来不像 Perl...

标签: perl message-queue


【解决方案1】:

usage 其实是

msgsnd ID,MSG,FLAGS

Perl 字符串不像 C 中那样以 NUL 结尾;字符串标量(例如MSG)除了字符串缓冲区本身之外还包含一个字段,该字段包含字符串缓冲区中数据的长度,因此所有必要的信息都可以在这三个参数中获得,以进行底层msgsnd() 调用。

Here 是 Perl 的 msgsnd 运算符的实现。

【讨论】:

    猜你喜欢
    • 2017-08-25
    • 2011-07-10
    • 1970-01-01
    • 2018-09-09
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    相关资源
    最近更新 更多