消息队列函数 msgsnd 出现Invalid argument错误的解决办法
来源:互联网 发布:淘宝做代理可靠吗 编辑:程序博客网 时间:2024/05/21 14:44
直接看代码:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>
#include <stdlib.h>
#define MAX_MSG 128
struct mssgbuf
{
long type;
char buf[MAX_MSG];
};
int main()
{
int msqid;
int err;
key_t key;
key = ftok(".",'b');
if(key < 0)
{
printf("fait to creat value\n");
return -1;
}
msqid = msgget(key,IPC_CREAT|0666);
if(msqid < 0)
{
perror("failse to masgget");
return -1;
}
printf("success to get msqid %d\n",msqid);
system("ipcs -q");
struct mssgbuf sendbuf;
printf("enter your message:\n");
fgets(sendbuf.buf,MAX_MSG,stdin);
sendbuf.type = 1;
err = msgsnd(msqid,(void *)&sendbuf,strlen(sendbuf.buf)+1,0);
if(err < 0)
{
perror("write message fail");
return -1;
}
printf("success to write message\n");
printf("err = %d\n", err);
system("ipcs -q");
err = msgctl(msqid,IPC_RMID,NULL);
if(err < 0)
{
printf("fail to delete message queue\n");
return -1;
}
system("ipcs -q");
return 0;
}
以上是修改过的代码, 重点在sendbuf.type = 1这句,不加上这句的话 就会出现如题所说的错误。
- 消息队列函数 msgsnd 出现Invalid argument错误的解决办法
- 消息队列通信msgsnd函数时一直invalid argument
- 消息队列工作机制 msgsnd: Invalid argument
- 消息队列工作机制 msgsnd: Invalid argument
- 消息队列工作机制 msgsnd: Invalid argument
- 消息队列莫名其妙的错误 mq_open失败,Invalid argument
- [Linux]解决msgsnd <Invalid argument>错误
- zsim shmget出现shmget:Invalid argument错误的解决办法
- msgsnd与msgrcv函数出现invalid参数的问题
- accept函数出现“Invalid Argument”的原因
- accept函数出现“Invalid Argument”的原因
- 消息队列所用到的函数 msgget() msgsnd() msgrcv() msgctl()
- shmget出现Invalid argument错误
- 消息队列函数(msgget、msgctl、msgsnd、msgrcv)
- 消息队列函数(msgget、msgctl、msgsnd、msgrcv)
- 消息队列 (msgrcv, msgsnd)
- accept的Invalid Argument错误
- red5的invalid argument错误
- Mysql插入效率比较
- TIM4定时器功能设置
- 采铜:基于心理学的高效学习策略
- tcgetattr学习
- atexit函数学习
- 消息队列函数 msgsnd 出现Invalid argument错误的解决办法
- sigaction函数学习
- stat函数学习
- getcwd函数学习
- chroot()使用
- src/lib/framework/src/driverFramework.cpp学习
- 跟益达学Solr5之使用Ansj分词器
- px4::init_once();和px4::init(argc, argv, "px4");函数学习
- 黑苹果忘记密码解决办法