Killen von Unterunterprozessen

Post Reply
Message
Author
tj

Killen von Unterunterprozessen

#1 Post by tj »

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

User avatar
hjb
Pro-Linux
Posts: 3264
Joined: 15. Aug 1999 16:59
Location: Bruchsal
Contact:

Re: Killen von Unterunterprozessen

#2 Post by hjb »

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?

tj

Re: Killen von Unterunterprozessen

#3 Post by tj »

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:

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#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[<!--no-->4<!--no-->];
argv[<!--no-->0<!--no-->] = "sh";
argv[<!--no-->1<!--no-->] = "-c";
argv[<!--no-->2<!--no-->] = "g++ -O3 sigtest.cpp -o sigtest";
argv[<!--no-->3<!--no-->] = 0;
execv("/bin/sh", argv);
exit(127);

} else {

sleep(1);
kill(pid,SIGTERM);
cout << "killed " << pid << endl;
sleep(10);
exit(0);
}
</font><hr></pre></blockquote>

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

Post Reply