ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> php-gtk-dev
php-gtk-dev
[PHP-GTK-DEV] #41875 [Com]: io_add_watch can't detect HUPs
by Bob At Kateos Dot Org other posts by this author
Jul 18 2007 12:06PM messages near this date
[PHP-GTK-DEV] #41875 [Opn->Bgs]: io_add_watch can't detect HUPs | [PHP-GTK-DEV] #41843 [NEW]: Set text on cloned GtkLabel gives segmentation fault
ID:               41875
 Comment by:       bob at kateos dot org
 Reported By:      sebastianmarconi at gmail dot com
 Status:           Open
 Bug Type:         PHP-GTK related
 Operating System: Windows XP
 PHP Version:      5.2.3
 New Comment:

works as expected on Linux.


Previous Comments:
------------------------------------------------------------------------

[2007-07-02 19:04:10] sebastianmarconi at gmail dot com

Description:
------------
It seems that Gtk::io_add_watch
can't detect HUP conditions using
beta Windows binary with Gtk+ 2.10.

In some cases the only workaround that I've found is to look the
process status info [1] in the STDOUT callback (sometimes it sends IO_IN
signals constantly), but randomly losses some information.


[1]
<?php

$status = proc_get_status($proc_id);
if (! $status['running']) {
	$this-> io_hup($pipe);
}	

?> 

Reproduce code:
---------------
<?php

function out($pipe) {
       echo "STDOUT\n";
       echo stream_get_contents($pipe);
}

function hup($pipe){
       echo "HUP\n";
       Gtk::main_quit();
       return false;
}


$pipes = null;
$descriptor = array(
       0 =>  array("pipe", "r"),  // stdin
       1 =>  array("pipe", "w"),  // stdout is a pipe that the child
will write to
       2 =>  array("pipe", "w")   // stderr
);
$cmd = 'dir';
$p = proc_open($cmd, $descriptor, $pipes);
Gtk::io_add_watch($pipes[1],Gtk::IO_IN, 'out');
Gtk::io_add_watch($pipes[1],Gtk::IO_HUP, 'hup');

Gtk::main();
echo "EXIT\n";
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);

?> 

Expected result:
----------------
STDOUT
[Dir contents]
HUP
EXIT

Actual result:
--------------
STDOUT
[The script hangs]


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=41875&edit=1

-- 
PHP-GTK Development Mailing List (http://gtk.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Thread:
Sebastianmarconi At Gmail Dot Com
Sebastianmarconi At Gmail Dot Com
auroraeosrose
Bob At Kateos Dot Org

Privacy Policy | Email Opt-out | Feedback | Syndication
© ActiveState Software Inc. All rights reserved