After step 3, you may need to do:

    g_io_channel_set_encoding (iochan, NULL, NULL);
    g_io_channel_set_buffer_size(iochan, 0);
    g_io_channel_set_flags(iochan, G_IO_FLAG_NONBLOCK, &gerr);


Salsaman.




http://lives.sourceforge.net
https://www.ohloh.net/accounts/salsaman


On Thu, Oct 10, 2013 at 8:35 AM, Kang Hu <hukangu...@gmail.com> wrote:

>  see
> https://developer.gnome.org/glib/2.38/glib-Spawning-Processes.html#g-spawn-async-with-pipes
> 1. call g_spawn_async_with_pipes and get the stdin, stdout, stderr fds.
> 2. call g_child_watch on the pid returned in step 1.
> 3. create an io channel for each fd ( see g_io_channel_unix_new)
> 4. add each io channel to the main loop ( see g_io_add_watch) .
>    read external  application output (see g_io_channel_read_*)  in the
> callback function GIOFunc
>    and update your widget's text section
> 5. you can kill external programs by the pid you get in step 1.
> NOTE: you need to release fds in callbacks in step 2.
>
>
> On Thu, Oct 10, 2013 at 12:55 PM, Woody Wu <narkewo...@gmail.com> wrote:
>
>> Hi,
>>
>> I am about to write a test runner with GTK+. It basically can list a lot
>> of external test programs (non-GTK+ pure Linux apps) in a treeview and
>> let user select one of them to run. While an external program is
>> running, I want to get all its outputs (to stdout/stderr) and keep
>> updating in a textview.
>>
>> Since I am a Linux programmer, so I know how to fork a new process and
>> pipe into an external program. But I don't know in GTK+, what's the
>> right method to keep fetching the information from the pipe and showing
>> them in my GUI widgets.  On the other hand, while an external program is
>> running, I don't want user feel that the my program is frozing and user
>> should be able to kill the running external program by clicking a 'stop'
>> button on the GUI.
>>
>> For this kind of task, what GTK+ technology I should go to grab?  Thanks
>> in advance!
>>
>> --
>> I can't go back to yesterday - because I was a different person then
>> _______________________________________________
>> gtk-list mailing list
>> gtk-list@gnome.org
>> https://mail.gnome.org/mailman/listinfo/gtk-list
>>
>
>
> _______________________________________________
> gtk-list mailing list
> gtk-list@gnome.org
> https://mail.gnome.org/mailman/listinfo/gtk-list
>
>
_______________________________________________
gtk-list mailing list
gtk-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-list

Reply via email to