- 论坛徽章:
- 0
|
请问为什么子进程中报错:msgsnd: Invalid argument
下面是程序相关的信息:
系统
Linux localhost.localdomain 2.4.20-8 #1 Thu Mar 13 17:18:24 EST 2003 i686 athlon i386 GNU/Linux
主要代码:
父进程中
msqid=ipc_get(1001,IPC_CREAT|IPC_EXCL|0666);
子进程中:
msqid=ipc_get(1001,IPC_CREAT|0666);
ipc_snd(msqid,msg,sizeof(sen_msg_t));
ipc_get函数:
int ipc_get(key_t key,int msgflag)
{
int rc;
rc=msgget(key,msgflag);
if(rc == -1){
perror("msgget");
printf("msgget error rc:%d thread id:%d file[%s] line[%d]\n",rc,pthread_self(),__FILE__,__LINE__);
exit(1);
}
return rc;
}
ipc_send函数:
int ipc_snd(int msqid,void *msg,size_t msgsz)
{
int rc;
rc=msgsnd(msqid,(char *)msg,msgsz,IPC_NOWAIT);
if(rc == -1){
perror("msgsnd");
printf("msgsnd error rc:%d thread id:%d file[%s] line[%d]\n",rc,pthread_self(),__FILE__,__LINE__);
exit(1);
}
return rc;
} |
|