On Sat, Feb 12, 2011 at 01:31:18PM -0500, Dad wrote:
> If I am going to run the following command line prompt from my
> application run-time ->
> 
> echo '\version "2.12" \relative {\clef "alto" c4 d e f g a b c}'
> | /usr/bin/lilypond --output=myscale.png -
> 
> using g_spawn_async_with_pipes() how on earth do I set the input of
> lilypond to suck up the output of echo (notice the pipe)?  Am I thinking
> incorrectly here?

Well, yes, you do; g_spawn_async_with_pipes() runs a program (similarly
to execve()).  It does not invoke the shell.  The pipes in its name
indicate that *your program* will communicate with the subprocess using
pipes, not that you pass a shell pipeline.

So, to use g_spawn_async_with_pipes() you should obtain the subprocess'
standard input – from argument standard_input – and send the input there
from your program instead of echoing it.

I am not aware of GLib wrapper that would work like system(), i.e.
invoke a shell (there was some in libgnome, IIRC).

Anyway I find it all a bit awkward: if you don't *have to* pass the data
to the standard input of lilypond isn't creating a temporary file with
the entire input simpler?

Yeti

_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to