linux-l: execl+pthreads in einem Programm

Stefan Bund sbund at artec-berlin.com
Mo Nov 27 12:39:28 CET 2000


Jan-Benedict Glaw <jbglaw at lug-owl.de> writes:
> On Mon, Nov 27, 2000 at 09:49:22AM +0100, Stefan Bund wrote:
> > Aber der ge-exec'te Prozess (das ist der eigentliche CORBA-Server,
> > siehe den parallelen thread mit dem Subject: fork() problem mit
> > omniorb). bleibt einfach hängen :-(
> > 
> > Sogar wenn ich statt fork()/exec() probeweise system() verwende
> > klappt's nicht: Das Programm wird gestartet, bleibt dann aber
> > hängen. Nur wenn ich das Programm direkt von der Shell aus aufrufe,
> > funktioniert das.
> 
> Kann's sein, daß Dein CORBA-Server irgendwelche Ausgaben nach stdout
> oder stderr machen will und Du diese streams schon dichtgemacht hast
> oder so? 

Nope. Zumindestens weiß ich dann davon nix. Ich habe stdout/stderr
nicht explizit geschlossen.

> Aus einem nicht-gethreadetem Programm heraus einen fork()
> zu machen, um direkt danach (im child) einen exec() mit dem 
> gethreadeten Programm zu machen, ist sicher. Wenn das nicht klappt,
> dann vermute ich eher einen bug in Deiner daemonize()-Funktion...

Klaro, das geht ja eigentlich auch, aber ich starte das gethreadete
Programm ja aus einem anderen gethreadeten Programm (direkt oder
indirekt über /bin/sh). Das scheint wohl das Problem zu sein. Die
Frage ist halt: kann man das irgendwie hinbiegen ?

Stefan.



Mehr Informationen über die Mailingliste linux-l