问题
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
- Compile server -> run server
- 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);
回答1:
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);
来源:https://stackoverflow.com/questions/8045626/fifo-server-program