enter image description here

The above program i have typed in linux. It basically has to connect a client and server in separate terminals. But when i run them in the correct order, i.e

  1. Compile server -> run server
  2. Compile client - > run client

The terminals just dont do anything. It doesnt even print the "Trying to connect" part of the first printf statement. What is the mistake here?

EDIT

I checked for return value of mkfifo as @parapura rajkumar said. But Still it remains the same. Here is my changed code for server.

if(mkfifo("fifo1",0666)<0) {
  printf("Error");
}
if(mkfifo("fifo2",0666)<0) {
  printf("Error");
}
fflush(stdout);
有帮助吗?

解决方案

You made deadlock. Server wait open("fifo1",O_RDONLY) and client wait open("fifo2",O_RDONLY).

Edit client.c:

int writefd = open("fifo1",O_WRONLY);
int readfd = open("fifo2",O_RDONLY);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top