"The caller will write to the subprocess through pipe_filter_gi_write and finally call pipe_filter_gi_write."
I think that second "pipe_filter_gi_write" should be "pipe_filter_gi_close". Sadly, what I'm really after is pipe_filter_ig_* :) -- http://rrt.sc3d.org