Я хочу добиться связи между многими клиентами (через множество терминалов). В моей программе у меня есть вилки, так что многие дети могут одновременно выполнять работу. Моя проблема заключается в том, что когда клиент (например, клиент 2) открывает именованный канал (например, с клиентом 3), он открывает именованный канал 2_to_3, и после этого клиент 2 ждет, пока клиент 3 также откроет именованный канал 2_to_3. труба. Я хочу установить таймер, чтобы мои клиенты не блокировались (не при открытии и не при записи / чтении).
char *pipename=malloc(50*sizeof(char));
strcpy(pipename,"project/");
strcat(pipename,firstclient);
strcat(pipename,"_to_");
strcat(pipename,secondclient);
int ret_val=mkfifo(pipename,0666);
char *buf=malloc(100*sizeof(char));
//we fill the buf with something
int fd;
fd=open(pipename,O_WRONLY);
write(fd,buf,100);