Zum Inhalt springen

Timeout für waitpid()


Hahne

Empfohlene Beiträge

Hallo,

ich sitze gerade an einen kleinen C Programm (und das auch noch als .NET Programmierer ;) ) indem ich einen Prozess mit fork() splitte. In meinen Childprozess führe ich einen einfachen exec() aus. In meinem Parentprozess warte ich mit der Funktion waitpid() auf meinen Childprozess. Gibt es eine Möglichkeit dem Warten einen Timeout zu geben. Also z.B. dass ich meinem Childprozess nur 60 Sekunden Zeit gebe. Sollte der Childprozess dann immer noch nicht beendet sein dann soll er diesen abbrechen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo ihr,

hab es jetzt doch noch lösen können mein Problem. Und zwar folgendermaßen:


pid_t pid = 0;

int status, err = 0; 


switch((pid = fork())) {

	case -1: /* error */

		fprintf(stderr, "Error\n");

		break;

	case 0:	/* child */

		err = execl (hier der exec ...);

		if (err == -1)

			exit(1);

		break;

	default: /* parent */

		signal(SIGCHLD, sighandler);


		if (sleep(20) == 0) {

			printf("Fehler! Timeout...\n");

			kill(pid, SIGTERM);

		}

		waitpid(pid, &status, 0);

		break;

}

Ich habe zuerst mit fork() ganz normal einen Prozess gesplittet in ein Parent udn Childprocess. Im Childprocess führe ich meine ganz normale exec-Funktion aus. Im Parentprocess setze ich ein Signalhandler mit SIGCHLD und setze mein Parentprocess auf sleep(). Wenn der Childprocess fertig ist beendet er den sleep und gibt die Anzahl der noch verbleibenden Sekunden zurück. Sollte der Timer abgelaufen sein gibt er eine Fehlermeldung aus und killt den Childprocess. :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...