Child Process ID an Parent weitergeben
-
Ubuntu und fork ... aber ich bin mittlerweile drauf gekommen, nur kann ich das "kill" command nicht ausführen ...
kill (children[n], SIGKILL);
nur warum geht es nicht?
-
Der Compiler jammert etwas von impliziert definierter Funktion ...
Allerings sind
#include <sys/wait.h> #include <sys/types.h>
eingebunden, daher verstehe ich den Fehler nicht ganz
-
Manpage sagt:
#include <sys/types.h>
#include <signal.h>
-
Hi, wirft mir auch mit signal.h noch einen Fehler
... #include <sys/types.h> ... #include <signal.h> ... kill (children[n], SIGKILL);
Wobei children[n] ein int[] ist und n ein int.
-
Wie wärs, wenn du deine Versuche im dafür passenden Forum präsentierst?
-
Ich bin doch im C Forum und in C will ich ja programmieren, was meinst du?
-
Ich meine, dass deine Versuche, POSIX Funktionen zu verwenden, ins Unix Forum gehören, und nichts mit C89/C99 zu tun haben (so heißt dieses Forum).
-
Noch mehr aus der Man:
SYNOPSIS
#include <sys/types.h>
#include <signal.h>int kill(pid_t pid, int sig);
Ein pid_t ist zwar bei mir ein int. Aber ob das auf anderen Systemen die POSIX unterstützen auch so ist, weiß ich nicht.
Ansonsten bin ich noch nicht gescheit genug, nur mit der Fehlermeldung iwas anzufangen. Wenn du also einen kleinen Codeschnippsel herausgeben könntest, der deinen Fehler repräsentiert.
EDIT: Im Linux/Unix Forum fortgeführt http://www.c-plusplus.net/forum/295710
-
Der Code:
... #include <sys/types.h> ... #include <signal.h> ... if (pid != 0){//Bin also im Parent //Warte darauf, dass alle Kinder fertig sind while (pid == waitpid(-1, NULL, 0)) { if (errno == ECHILD) { break; } //Will dann noch die übrig gebliebenen Kinder "killen", damit keine Zombies entstehen while(n != 0) { n--; kill (children[n], SIGKILL); } } }
n enthält die Anzahl der Kinder.
MfG The-Forgotten
-
Und children wird so erstellt: int children[n];