问题标签 [msgrcv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 消息队列。msgsend msgrcv。C (Linux) 中的 System V IPC 系统调用
嗨,我正在使用一些共享内存,其中不同的进程读取和写入数据。我正在使用消息队列来存储数据在读取和写入操作之间发生更改时的消息。
因此,在读写和检查更改时,进程以下列方式存储消息
这工作正常。哦,顺便说一下,这是我创建消息队列的方式。
所以我的问题是我不太确定如何从队列中检索消息并将它们显示在屏幕上。我一直在阅读msgrcv()
系统调用,但对我来说不是很清楚。
rc
是一个,int
因为msgrcv()
返回一个int
。我如何将int
其指向实际消息?如何从消息中读取内容以便显示它们?我假设这应该在某种循环中完成。
c - IPC 消息队列。msgrcv 系统调用。系统五、如何跳出循环
我有一个消息队列,我从中循环获取消息。问题是我不知道如何退出循环。msgrcv 返回类型 size_t 所以它继续。我应该比较返回值什么值才能退出循环?
c - UNIX 消息队列 msgrcv 接收消息失败
亲爱的朋友们,知道为什么 msgrcv 会收到一个空白缓冲区吗?
这是代码:
c - msgrcv 收到空白消息
我有两个程序通过 IPC 队列来回发送和接收消息。但是,有时 msgrcv 函数会收到一条空白消息,而不是接收实际通过队列发送的消息。我已经注释掉了一个我认为应该有效的修复程序,但我想在这里检查一下,看看这是否是使用 msgrcv 和 msgsnd 的正确方法。
msgrcv:
消息:
c - 在 C 中传递消息/从 C 中的结构打印 char 数组
我创建了这个程序来将消息传递给父进程。我希望父进程打印出它收到的消息。我不确定这是否是读取 char 数组或消息传递的问题,因为我对 c 编程很陌生。这是我的尝试:
我的问题是,为什么在编译和执行这段代码时没有显示用于发送的消息?
c - 中断的系统调用
如下所示,我从 main 运行了三个以上的计时器,并且我在 main 部分定义了一个消息队列。我的计时器的到期时间为 10(最大值)。为什么,当计时器到期时,“msgrcv”会出现“系统调用中断”之类的错误?
linux - 使用 msgrcv 读取动态长度内容
我使用 msgrcv 函数从消息队列中读取消息。当我读取已知长度的数据时,它工作正常。在某些情况下,我的消息长度是可变的。在这种情况下,我如何只分配所需的内存量并从消息队列中读取消息而不会丢失消息队列中的任何数据。请给出解决这个问题的想法。
注意:在 IBM 消息队列中,当我们读取超出长度的数据时,它会将消息的实际大小填充到我们传递给 mqget 函数的结构中。像这样,有没有办法在消息队列中执行此操作。
c - IPC msgrcv - 只接收两种特定类型的消息
我有问题。
我有一个进程,假设它是一个客户端,还有一个称为服务器的进程。客户端和服务器通过同一个队列相互通信。假设客户端向服务器发送消息(请求),因此服务器对其进行处理并应将消息发送回客户端确认或失败。假设确认有long type = 1500101
,失败有long type = 1500102
。
是否有可能(在 C 中使用 msgrcv)只等待这两种类型的消息(客户端)?如果不是,那么实现这种机制的最佳方法是什么?
message-queue - IPC 队列中的消息是如何排序的
我需要知道 IPC 队列中的消息是否已排序。在实践中,我需要知道当调用 msgrvc 函数时,我得到的第一条消息是进入队列还是选择的消息是随机的。
现在,我提出这个问题是因为当在代码 msgrcv 的一部分中收到一条不适合该代码的消息时,我通常将消息重新排队,并在队列中读取以下消息。我想知道的是,例如,他关注消息
味精A、味精B、味精C
,存储在队列中
msgB , msgC, msgA
因此,以下对 msgrcv 的调用将给我 msgB 或者如果该顺序是随机的,那么我可以再次读取 msgA
谢谢,恩佐
c - 使用 fork() 接收 SysV 消息
我试图在一系列 fork() 中接收我用 msgsnd 发送的一系列消息。我可以说发送的消息正常,但接收它们一直是个问题。这是代码的问题部分,以三个消息为例:
如果我在没有 fork() 的情况下编写类似的代码,它工作正常,所以我知道 fork() 以我不理解的方式弄乱了我的消息队列。有人可以告诉我为什么这在 fork() 中不起作用,以及我如何以这样的方式编写代码以使我的 fork() 能够正确接收消息?
编辑:我得到的是:第一个 fork 处理运行良好,第二个很少,第三个总是失败。errno 设置为 22,即 Invalid Argument。
更新(使用的声明):