【发布时间】:2016-11-02 17:07:22
【问题描述】:
这是一个将 msg 发送到队列的简单程序,但它会给出“snd error”作为输出。 队列被创建。我检查了 ipcs -q。 我做错了什么?
#include<stdio.h>
#include<unistd.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#include<sys/types.h>
#include<stdlib.h>
struct msg{
int mtype;
char mtext[1024];
}snd;
void main()
{
int id;
if(id=msgget(1234,IPC_CREAT|0666)<0)
{
printf("ipc error");
}
else{
snd.mtype=1;
scanf("%[^\n]",snd.mtext);
getchar();
if(msgsnd(id,&snd,sizeof(snd.mtext),IPC_NOWAIT)<0){
printf("snd error");
}
else {
printf("msg snd");
}
}
}
【问题讨论】:
-
你为什么先scanf然后getchar()?考虑使用 fgets 吗?
-
但我猜这应该不是问题。我尝试在simplestcodings.blogspot.in/2010/08/… 处复制粘贴并运行代码,这可以正常工作。但是我的程序不起作用?