Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Timeout für waitpid()

Empfohlene Antworten

Veröffentlicht

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.

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.