[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: named pipes programming problem

abottchow@yahoo.com writes:

> Hi all,
> I'm new to the group and am seeking your advice on my Debian Linux C++
> programming problem with named pipes.
> Two programs are involved. One is myProgram.cc, which reads user's
> input from keyboard and prints to the screen. The other program
> is main.cc, which wants to communicate with myProgram in real time
> using input/output redirection and two named pipes.
> Now the problem is that main.cc works fine in one machine (sun4u, OS
> version 5.9, sparc, Ultra-60) but hangs in another machine running
> Debian Linux--the execution falls into infinite waiting at the first
> std::getline statement in main.cc. Could anyone suggest what the
> problem might be? The two programs are as follows:

I bet the problem is buffering. You do flush the output so that end
should not block. But the getline probably wants to read more than is
available and then blocks.

> char *mycmd="./myProgram <sicsin  2>sicsout >sicsout &";
> system(mycmd);

You should use normal pipes here with fork/exec. Open a pair of pipes,
fork, close the right in/out ends in the parent and child, exec the
myProgram in the child. This might solve the deadlock as well.


Reply to: