我正在尝试使用FIFO实现IPC。发件人的代码如下..
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#define BUFFER_SIZE 100
#define LISTENER1 "listener1"
char news[BUFFER_SIZE];
void broadcast()
{
int fd1;
mkfifo(LISTENER1,0644);
fd1=open(LISTENER1,O_WRONLY);
printf("\nReady to broadcast\n");
do {
printf("\nEnter message : ");
scanf("%s",news);
write(fd1,news,strlen(news));
} while (1);
return;
}
int main()
{
broadcast();
return 0;
}
接收者的代码如下..
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#define BUFFER_SIZE 100
#define LISTENER "listener1"
char news[BUFFER_SIZE];
void receive()
{
int fd1,num;
mkfifo(LISTENER,0644);
fd1=open(LISTENER,O_RDONLY);
while((num=read(fd1,news,BUFFER_SIZE))>0)
{
news[num]='\0';
printf("\n Received : %s",news);
}
return;
}
int main()
{
receive();
return 0;
}
我在两个终端窗口中运行这两个程序。我面临的问题是消息没有得到专门的传递。假设我在发送者的窗口中键入一条消息,除非我在发送者窗口中键入下一条消息,否则它不会出现在接收者的窗口中。我希望在按下返回键后立即传递消息。请帮忙!