我試圖用服務器客戶端使用FIFO(命名管道)和共享內存製作井字遊戲。等到2 pid寫入FIFO(命名管道)
第一步是將客戶端進程的pid寫入FIFO。 而在服務器進程中,我需要等到2個pid通過FIFO(來自2個不同的客戶端進程)。
現在我只是在做2從管道讀取,但它不適用。我需要閱讀一段時間循環或什麼?
客戶端代碼:
#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個客戶端運行的,我應該怎麼做呢?
非常感謝, Asaf。