7d979f | 2010-10-26 | Martin Stjernholm | |
|
eb01b4 | 2010-10-26 | Martin Stjernholm | | #pike __REAL_VERSION__
|
87e926 | 2001-06-22 | Martin Nilsson | |
|
e1d715 | 2000-11-24 | Johan Schön | |
|
df57a2 | 2001-01-02 | Johan Schön | | constant contenttypes = ({ });
|
e1d715 | 2000-11-24 | Johan Schön | |
|
28d6b8 | 2001-08-08 | Martin Nilsson | |
|
40a44d | 2004-08-07 | Johan Schön | | .Output filter(Standards.URI uri, string|Stdio.File data,
|
e262e5 | 2001-06-05 | Per Hedbor | | string content_type, mixed ... more);
|
32e8b5 | 2001-06-28 | Johan Schön | |
|
5b2f18 | 2011-01-26 | Jonas Wallden | |
string my_popen(array(string) args, string|void cwd, int|void wait_for_exit,
array(string)|void watchdog_args)
|
94b610 | 2001-08-08 | Fredrik Noring | |
{
Stdio.File pipe0 = Stdio.File();
Stdio.File pipe1 = pipe0->pipe(Stdio.PROP_IPC);
if(!pipe1)
if(!pipe1) error("my_popen failed (couldn't create pipe).\n");
|
8b420e | 2005-05-23 | Anders Johansson | | mapping setup = ([ "env":getenv(), "stdout":pipe1, "nice": 20 ]);
|
b22532 | 2003-01-20 | Jonas Wallden | | if (cwd)
setup["cwd"] = cwd;
|
47fcc4 | 2003-03-19 | Jonas Wallden | | Process.create_process proc = Process.create_process(args, setup);
|
94b610 | 2001-08-08 | Fredrik Noring | | pipe1->close();
|
5b2f18 | 2011-01-26 | Jonas Wallden | |
Process.Process watchdog;
if (wait_for_exit && watchdog_args) {
array(string) wd_args =
replace(watchdog_args + ({ }), "%p", (string) proc->pid());
watchdog = Process.spawn_pike(wd_args);
}
|
94b610 | 2001-08-08 | Fredrik Noring | | string result = pipe0->read();
if(!result)
error("my_popen failed with error "+pipe0->errno()+".\n");
pipe0->close();
|
47fcc4 | 2003-03-19 | Jonas Wallden | | if (wait_for_exit)
proc->wait();
|
5b2f18 | 2011-01-26 | Jonas Wallden | |
if (watchdog)
watchdog->kill(9);
|
94b610 | 2001-08-08 | Fredrik Noring | | return result;
|
32e8b5 | 2001-06-28 | Johan Schön | | }
|