Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Killen von Unterunterprozessen

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
tj
Gast





BeitragVerfasst am: 04. Dez 2003 10:29   Titel: Killen von Unterunterprozessen

Moin, moin,

wenn ich per fork/exec den g++ compiler starte und dann versuche
diesen mit kill(pid,SIGKILL) zu beenden, dann laueft der cc1plus
Unterprozess von g++ noch einige Zeit munter weiter. Ist das normal?
Eigentlich sollte kill den doch auch beenden. Oder, wie komme ich
mit UNIX/C-Hilfsmitteln an die PIDs von Unterunterprozessen um
diese manuell zu beenden?

tj
 

hjb
Pro-Linux


Anmeldungsdatum: 15.08.1999
Beiträge: 3236
Wohnort: Bruchsal

BeitragVerfasst am: 05. Dez 2003 11:56   Titel: Re: Killen von Unterunterprozessen

Hi!

Mit SIGKILL hat der Prozeß keine Chance mehr, aufzuräumen. Das Problem ist also selbstverursacht. Verwende SIGTERM oder evtl. SIGINT.

Gruß,
hjb
_________________
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger

tj
Gast





BeitragVerfasst am: 05. Dez 2003 17:04   Titel: Re: Killen von Unterunterprozessen

hjb, vielen Dank erstmal fuer die Anregung, hab's gleich
mal ausprobiert, das Problem bleibt aber immer noch.
Hier mal ein kleines Testprogramm 'sigtest.cpp' um das
ganze zu verdeutlichen:

code:

#include <iostream>
#include <unistd.h>
#include <signal.h>

#include <vector>

using namespace std;


int main() {

// compilation will take a long time
vector<vector<vector<vector<vector<
vector<vector<vector<vector<vector<
vector<vector<vector<vector<vector<
int
> > > > >
> > > > >
> > > > >
dummy;

int pid = fork();

if (pid == 0) {

// compile myself
char *argv[4];
argv[0] = "sh";
argv[1] = "-c";
argv[2] = "g++ -O3 sigtest.cpp -o sigtest";
argv[3] = 0;
execv("/bin/sh", argv);
exit(127);

} else {

sleep(1);
kill(pid,SIGTERM);
cout << "killed " << pid << endl;
sleep(10);
exit(0);
}



Nach dem starten erscheint zwar "killed ...", aber in top
sehe ich cc1plus weiterhin laufen, auch wenn sich das
Programm durch den exit-Aufruf beendet...

Ich waere echt dankbar, wenn jemand noch ne Idee hat
woran's liegen koennte.

tj
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy