问题标签 [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.

0 投票
1 回答
82 浏览

c - 消息队列不会读取枚举类型的消息

我正在尝试使用消息队列在父进程和子进程之间发送和接收消息,我使用 enum 为 msgrcv 设置消息类型,但它似乎忽略了该信息:

命令是:

如果我将参数从 enum 类型更改为 int ,它会起作用,但我想知道为什么它不能作为 enum 工作,还有其他方法可以让它工作。

提前致谢!

0 投票
1 回答
395 浏览

c - c中msgrcv的参数无效

这段代码基本上试图在两个不同的进程之间进行通信。谁能帮助我,因为 msgrcv 没有收到来自 msgsnd 的 msg,我不明白为什么。此代码只是一个示例。我也尝试将代码放在标志所在的位置,但无论如何我并不相信。有小费吗 ?

0 投票
1 回答
593 浏览

linux - 为什么 msgsnd() 和 msgrcv() 不能正常运行?

msgsnd() 和 msgrcv() 在同一个函数中,它和第一个例子一样工作得很好。

主程序

comproc.c

效果很好,结果:

但是当我将 msgrcv() 放入另一个函数时,它不能正常工作。像这样:

comproc.c

结果是这样的:

或像这样:

但是,但是,如果我也将 msgsnd() 放入另一个函数中,它会再次运行良好。

comproc.c

所以这很奇怪,对吧?我不明白为什么会这样。所以我非常希望你们能帮助我理解这一点。太感谢了!!!

0 投票
1 回答
300 浏览

c - Msgrcv does not receive messages however they have been sent properly

I'm writing a basic server program which has to receive two types of messages from clients (first message is of type 1 and second is of type 2). It seems that it doesn't see messeges from clients that have been sent properly (msgsnd doesn't return -1). I read that it may be caused by too big message, but my messages are like a few characters long and my buffer is 100. I didn't find any differences in structures I create, msgget also doesn't return any error. Here's the server program code:

And a client code:

0 投票
0 回答
88 浏览

c - 消息队列消息接收给出错误无效参数

消息队列非常新,当我将消息从 pikabo.c 发送到 master.c 时出现错误。我最初认为我的 msgget() 有问题,但是 master 能够向 pikabo.c 发送消息并且 pikabo 能够读取它。

我正在写这些行,否则我的问题不会发布。

这是我的代码: master.c

皮卡博.c

0 投票
1 回答
149 浏览

c++ - 如何修复范围内的字符串声明错误

我正在尝试运行进程间通信程序,但它说字符串未按原样在范围内声明,当我添加 #inlcude 时,我收到一条错误消息:

这是我的代码:

期望代码打印出从发件人文件发送的消息

0 投票
0 回答
456 浏览

c - 读取消息后如何从消息队列中清除消息?

我试图创建一个程序,主程序在该程序中不断向用户进程发送消息。每次用户进程收到消息时,它应该发送一个确认(将消息发送回主进程),说明它收到了消息,并在 1-3 之间选择一个随机数。所以我在用户进程中设置了一段时间(1)。但是正在发生的事情是用户进程在收到消息后不断循环直到它终止,然后才将消息发送回主控。我只是想让用户进程选择一个号码发回消息,但用户进程是:
选择一个号码发送消息
选择一个号码发送消息
选择一个号码发送消息

更新 我试图在从用户发送到主控的 msgsend 之后添加 sleep(1) 以将控制权交给主控,但这仍然没有做任何事情。试图删除 while 循环,但这在第二次进程收到消息时给我带来了麻烦。

这是到目前为止的代码: user.c

大师.c

我的输出

0 投票
1 回答
119 浏览

c - 消息类型与发送的不同 - msgsnd/msgrcv C

我正在为考试学习操作系统基础知识,但遇到了一个奇怪的问题。我目前正在研究发送/接收功能。假设我有 3 个主程序客户端,这要归功于msgsnd()原始发送消息。结构如下:

然后我有 2 个线程应该捕获客户端发送的消息,感谢msgrcv(). 一切都应该在消息之后发生RTSOTSOK TO SEND,READY TO SEND)。发送应该是同步的。当一个线程接收到 RTS 消息时,它应该只从发送者客户端接收。这使我将message字段设置msg_typ为 Client Pid,并msgrcv()使用此原型调用该函数:

假设queque是RTS队列的id,msg_typ设置参数是0为了接收队列的第一条消息,然后线程通过message字段msg_typ恢复客户端的PID。

但是,在运行时,message字段msg_typ与发送的字段不同,即使我确定线程实际上正在接收相同的消息:

为了更好地理解,这些是我使用过的程序:

在哪里:

  • who是一个字符串,我用它来识别调用函数的线程/客户端;
  • queques是一个包含 和 queques的OTS数组。RTSMessage

我没有更多的想法了。你知道原因吗?先感谢您。

0 投票
0 回答
75 浏览

operating-system - 接收进程如何通过消息队列实际接收来自发送进程的进程?

我正在开发一个使用共享内存和消息队列的发送方和接收方进程的项目。对于我的生活,我无法让接收器进程接收文件,但我无法弄清楚实际出了什么问题。似乎它实际上没有获取文件,或者它只是陷入了无限循环。

所以我知道使用消息队列,您需要使用消息队列ID附加到消息队列。然后,当您发送消息时,它会进入消息队列,接收者可以从该消息队列中接收它。然而,这就是我在我的代码中所做的(我认为),但如前所述,接收器进程似乎没有获取文件。那么我在进程如何接收消息并因此错误地执行代码方面错了吗?任何帮助将不胜感激,因为我的教授只是让我们陷入其中,没有解释如何做到这一点,所以我一直在努力自学。这就是我的代码:

消息.h:

发件人.cpp:

接收器.cpp:

0 投票
1 回答
57 浏览

c - 找不到我的猜谜游戏的解决方案

我正在制作一个不同版本的猜谜游戏。这一次,子进程必须将它的猜测发送给父进程,然后父进程对其进行评估。我认为我做错的是我的孩子只跑了一次,但在找到正确的数字之前无法弄清楚如何猜测。