|
|
|
|
|
|
|
[Original]
[Print]
[Top]
|
struct msgbuf{long type;char data[BUFSIZ];};
struct msgbuf p;
char buf[BUFSIZ];int msgid; int i=1;
msgid=msgget((key_t)1234,0666|IPC_CREAT);
while(i){
fgets(buf,BUFSIZ,stdin);
p.type=1;
strcpy(p.data,buf);
msgsnd(msgid,&p,BUFSIZ,0);
if(strncmp(buf,"end",3)==0) i=0;}
发送程序从键盘接收输入作为消息发送,但是发两三条消息(我从键盘输入两三次)就阻塞了,接收程序那边更惨,msgrcv连这个两三条消息都收不全,就阻塞了。我是用strncmp(buf,"end",3)来判断是否结束循环的,本身没问题,我把msgsnd屏蔽了,程序按设计正常运行,就是msgsnd的毛病,估计。缓冲区空间应该够用,BUFSIZ不小了,请指教,谢谢!
原来缓冲区不能用指针,惭愧
|
|
|
[Original]
[Print]
[Top]
|
|
|