Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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.

Geschrieben

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. :)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...