linux-l: execl+pthreads in einem Programm

Stefan Bund sbund at artec-berlin.com
Mo Nov 27 09:49:22 CET 2000


Jan-Benedict Glaw <jbglaw at lug-owl.de> writes:
> Sach' mir, wo soll's klemme:

Also hier bin ich wieder aus dem Wochenende zurück (ich, der ich diese
Frage aufgeworfen habe :-)

> int do_sth(void) {
>         int     status;
>         char    *args[] = {
>                         "/bin/true",
>                         NULL
>         };
> 
>         switch(status = fork()) {
>                 case -1: {
>                         fprintf(stderr, "Wicked things happened...\n");
>                         break;
>                 }
>                 case 0: {
>                         execvp("/bin/true", args);
>                         break;
>                 }
>                 default: {
>                         fprintf(stderr, "Child should just be started...\n");
>                         break;
>                 }
>         }
> 
>         return status;
> }

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.

Meine Befürchtung: Ich kann aus einem Programm, welches threads
verwendet kein anderes Programm, welches threads verwendet
starten. (Beide verwenden bei mir halt CORBA).

Das ist ziemlich be...löd

Gibt's da keine Lösung? Ich kenn mich mit pthreads oder so nicht
speziell aus, das wird halt nur von CORBA (omniorb) verwendet...

Aber trotzdem schon mal vielen Dank,

Stefan.



Mehr Informationen über die Mailingliste linux-l