我正在尝试使用 FIFO(命名管道)和共享内存与服务器客户端制作井字游戏。
第一步是将客户端进程的pid写入FIFO。在服务器进程中,我需要等到 FIFO 中传递了 2 个 pid(来自 2 个不同的客户端进程)。
现在我只是从管道中读取 2 次,但它不能正常工作。我需要在while循环中阅读吗?
客户端代码:
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
void main()
{
int fd;
int pid=getpid();
pid_t pid1=getpid();
fd=open("fifo_clientTOserver",O_WRONLY);
write(fd,&pid1,sizeof(pid_t));
printf("%d\n",pid1);
while(1);
}
服务器代码:
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
void main()
{
int fd;
pid_t pid;
ftok("shmdemo.c","j");
mkfifo("fifo_clientTOserver",400);
fd=open("fifo_clientTOserver",O_RDONLY);
read(fd,&pid,sizeof(pid_t));
printf("%d",pid);
read(fd,&pid,sizeof(pid_t));
printf("%d",pid);
//sleep(2);
}
我希望服务器等到 2 个客户端正在运行,我应该怎么做?
非常感谢,阿萨夫。