linux c语言进程间通信疑问,上述程序只是想父进程创建一个消息队列,发给子进程消息,但是为什么没有成功
#include<stdio.h>#include<sys/types.h>#include<sys/ipc.h>#include<sys/msg.h>#include<...
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include<stdlib.h>
#include <string.h>
struct msgbuf
{
long type;
char a[20];
}sndmsg,rcvmsg;
int main()
{
char str[15]="abcedfg";
int status;
pid_t pid;
int msgid;
pid=fork();
if(pid < 0)
{
printf("errorjincheng");
exit(0);
}
else if(pid==0)
{
sleep(1);
printf("succedd");
if((status=msgrcv(msgid,&rcvmsg,sizeof(struct msgbuf),111,IPC_NOWAIT))==-1)
{
printf("error1");
exit(254);
}
printf("not succedd");
printf("the %cis%s",'a',rcvmsg.a);
msgctl(msgid,IPC_RMID,0);
exit(0);
}
else
{
if((msgid=msgget(IPC_PRIVATE,0666))==-1)
{
printf("error111");
exit(0);
}
sndmsg.type=111;
strcpy(sndmsg.a,str);
msgsnd(msgid,&sndmsg,sizeof(struct msgbuf),0);
}
} 展开
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include<stdlib.h>
#include <string.h>
struct msgbuf
{
long type;
char a[20];
}sndmsg,rcvmsg;
int main()
{
char str[15]="abcedfg";
int status;
pid_t pid;
int msgid;
pid=fork();
if(pid < 0)
{
printf("errorjincheng");
exit(0);
}
else if(pid==0)
{
sleep(1);
printf("succedd");
if((status=msgrcv(msgid,&rcvmsg,sizeof(struct msgbuf),111,IPC_NOWAIT))==-1)
{
printf("error1");
exit(254);
}
printf("not succedd");
printf("the %cis%s",'a',rcvmsg.a);
msgctl(msgid,IPC_RMID,0);
exit(0);
}
else
{
if((msgid=msgget(IPC_PRIVATE,0666))==-1)
{
printf("error111");
exit(0);
}
sndmsg.type=111;
strcpy(sndmsg.a,str);
msgsnd(msgid,&sndmsg,sizeof(struct msgbuf),0);
}
} 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |