rendered paste body#!/usr/bin/php-gtk<?phpfunction sig_handler($signo) { switch ($signo) { case SIGTERM: // handle shutdown tasks exit; break; case SIGHUP: // handle restart tasks break; default: // handle all other signals }}// setup signal handlerspcntl_signal(SIGTERM, "sig_handler");pcntl_signal(SIGHUP, "sig_handler");/* currently no used as it make it a pain to kill the process$pid = pcntl_fork();if ($pid == -1) { die("could not fork");} else if ($pid) { echo "closing parent process\n"; exit(); // we are the parent}*/$server = stream_socket_server('tcp://127.0.0.1:1999');$child = false;$i = 0;while(!$child){ $i++; echo "parent: waiting for client\n"; $client[$i] = stream_socket_accept($server, -1); echo "parent: forking\n"; $pid = pcntl_fork(); if ($pid == -1) { die("could not fork"); } else if ($pid) { echo "parent: closing client connection\n"; fclose($client[$i]); sleep(2); // wait before acepting another client }else{ echo "child: adding data watch\n"; Gtk::io_add_watch($client[$i], Gtk::IO_IN, 'client_data_in'); echo "child: wait for client data\n"; $child = ture; }}if($child){ echo "child: starting Gtk loop\n"; Gtk::main();}function client_data_in($client, $type){ echo "child: writting to client connection\n"; fwrite($client, fgets($client)); fwrite($client, fgets($client)); fwrite($client, fgets($client)); echo "child: closing client connection\n"; fclose($client); Gtk::main_quit(); echo "child: dies\n";}?>