问题标签 [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 - 在 msg 队列上通信期间出错
我做了一个消息队列,但是当助手向他的客户发送消息时,客户收到错误的号码:-1081388352。这适用于我发送的每个号码。在 msgget 期间甚至在 msgcrv 或 msgsnd 期间都没有错误。发送代码:
收到:
我做错了什么?某些标志有错误?
[从评论中添加:]
c - msgrcv() 中的错误:通过 C 中的消息队列接收数据
我正在使用 C linux 中的消息队列机制发送消息。但是 msgrcv 函数存在一些问题。它将错误显示为无效参数。请检查这个。
现在 msgbuf.h
我也想知道如何使用消息队列进行两种方式的通信。我需要创建两个消息队列来完成两个进程之间的通信吗?也欢迎使用相同的示例代码。
谢谢 :)
c - 无法在 C 中使用 POSIX 将整数从一个进程发送到另一个进程
我在 Linux 上使用 C 语言和 GCC 编译器。我有两个进程,我想将整数从一个进程传递到另一个进程,即从外部进程到中央进程,然后中央进程应该打印它。但是我的代码不起作用。谁能告诉我如何纠正它?这是我的代码
中央.c
外部.c
比我在终端上输入的
我收到了这个“外部进程退出”并且外部进程终止,而中央进程继续在后台运行。
c - 检查一个 msqid 看是否有消息没有等待或 msgrcv
谢谢大家检查这个。
我想知道是否有任何方法可以检查消息队列(msqid)并查看队列中是否有任何消息。如果没有,我想继续。我能够在网上找到的唯一方法是使用带有 IPC_NOWAIT 的 msgrcv,但如果没有找到消息,则会抛出 ENOMSG。尽管没有消息,我仍想继续。
我的代码太混乱了,我无法发布并为此感到自豪,所以我将发布一些我想要发生的伪代码:
据我所知,您可以无限期地等待,也可以在没有等待的情况下进行检查,如果没有任何内容,则崩溃。我只想检查队列而不等待,然后继续。
您可以提供的任何和所有帮助将不胜感激!非常感谢!
message-queue - 在消息队列中查询 MSG_EXCEPT 标志
谁能告诉我如何在消息队列的“msgrcv”函数中使用 MSG_EXCEPT 标志,例如?
我正在尝试这样做,但它会给我一个错误,例如:MSG_EXCEPT undeclared 我已经输入了“msgrcv”函数的所有头文件。
请用示例代码给我解决方案。
我正在上传接收方的示例代码。
c - C Linux (Ubuntu) - msgsnd() 和 msgrcv() errno 22 (EINVAL)
我现在正在尝试 IPC(消息传递)一段时间,但我无法解决这个问题。msgget() 的 errno 22 (EINVAL) 似乎是Invalid message queue identifier, nonpositive message type, or invalid message size。现在, msgrcv() 的 errno 22 是msgqid 无效,或者 msgsz 小于 0,所以这似乎表明我的队列 ID 是错误的,因为无效的 msqueue id 在两个错误解释中重叠。
我应该注意我的msgget()调用返回 0 作为队列 ID。这“应该”没问题,因为文档说任何非负返回值都是有效的。有任何想法吗?
将计数器调整为 1 后运行的输出(不想粘贴 100 条错误消息):
msqID = 0, sendMessage.msgText = Hola!: 0, sendMessage.msgType = 1, MSG_SIZE = 256 Ruh roh, 在父发送中: : 无效参数子 msgrcv(): msqID = 0, rcvMessage.msgText = , rcvMesage.msgType = 1, MSG_SIZE = 256 Ruh roh, in child rcv: : Invalid argument
这在第 31 行(父进程中的第一个 msgsnd())和第 60 行(子进程中的第一个 msgrcv())上失败。
c - 实现一个看门狗定时器
我需要实现一个每 35 秒检查一次条件的计时器。我的程序使用 IPC 方案在客户端和服务器进程之间来回传递信息。问题是我在循环中运行 msgrcv() 函数,它会暂停循环,直到找到一条消息,这不好,因为我需要计时器始终检查客户端是否停止发送消息。(如果它只在收到消息时检查,这将是无用的......)
这个问题可能看起来不清楚,但我需要的基础是一种实现看门狗定时器的方法,该定时器将每 35 秒检查一次条件。
我目前有这个代码:
唯一的问题是,正如我之前所说,如果没有消息进入,则无法到达检查时间已过的代码,因为 msgrcv 函数将保存该过程。
我希望我说得通,并且有人能够帮助我解决我的问题。
c - 消息接收程序仅打印每隔一条消息
我已经实现了http://beej.us/guide/bgipc/output/html/multipage/mq.html第 7.6 节中的两个程序。
我已经扩展了它,以便有两个接收程序,它去哪一个是由消息类型决定的。
问题出现在接收程序B和C。他们应该每次都打印出输入程序A的消息,但他们只是每隔一次打印消息。
这是发送消息的地方,它读取前 6 个字符,如果是 URGENT 则设置消息类型。
这是接收消息的地方,然后 if 语句检查类型然后打印出来。
谁能解释为什么它只打印出所有其他消息?
谢谢。
c - 询问 msgrcv ,不适用于根据优先级接受消息
这是我的代码,在最后一部分,msgrecv 不接受来自队列的消息,这些消息根据正确的优先级,例如:10 是最重要的接受然后 type=20 然后 type=30 ...这是我的目标是接受以这种方式发送消息...谁能告诉我问题出在哪里?因为接受没有优先权..谢谢..这就是代码
c - msgrcv() 函数在子进程中失败
我目前正在尝试在主进程及其子进程之间发送消息。我正在使用消息传递来强制执行关键部分,但我在子进程中的消息接收功能失败了,我不知道是否应该以不同的方式发送消息。我的消息接收功能正在我的父进程中获取消息,因此我无法调试用户进程未接收的原因。
oss.c
用户.c
共享内存.h