> Just keep in mind that pipes are not asynchronous in Linux in applications They are asynchronous. popen is just a wrapper that does the fork/exec and fd set up work for you, pclose is fclose plus waiting for the child to exit (which is kind of synchronous and catches people out now and then) > started via popen(). So, if the client process wants to read from, say, > stdin, that is OK. But you cannot use SIGIO on stdin. You will need to do pipes support SIGIO in modern Linux, you may need to unmask it and turn FASYNC on.