Hallo Josef,
Am Samstag, dem 18. August 2001 um 01:38:37, schrieb Josef Spillner:
Ich will einen Kindprozess starten, was auf seine stdin schreiben, und was von seiner stdout lesen. Also kein popen(), sondern bidirektional.
Der Quelltext ist auf: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/ggz/utils/guru/modules/exec.c... Funktion simpleexec().
Das Problem ist, sowohl read als auch waitpid müssen non-blocking sein, und ein Timeout muß es auch noch geben. Und das geht doch sicher irgendwie besser.
Du wolltest die Eigenschaften zweier pipes benutzen, hast aber die Funktion socketpair verwendet. Sockets sind aber bereits vollduplex - im Gegensatz zu pipes.
$ info libc:
Function: int socketpair (int NAMESPACE, int STYLE, int PROTOCOL, int FILEDES[2]) This function creates a socket pair, returning the file descriptors in `FILEDES[0]' and `FILEDES[1]'. The socket pair is a full-duplex communications channel, so that both reading and writing may be performed at either end.
Alles klar?
Torsten