pr_ids("parent"); if ((pid = fork()) < 0) { exit(1); } else if (pid > 0) { /* parent */ sleep(5); /* sleep to let child stop itself */ } else { /* child */ pr_ids("child"); signal(SIGHUP, sig_hup); /* establish signal handler */ printf("test\n"); kill(getpid(), SIGTSTP); /* stop ourself */ pr_ids("child"); /* prints only if we're continued */ if (read(STDIN_FILENO, &c, 1) != 1) printf("read error %d on controlling TTY\n", errno); } exit(0); } < /code> Die Idee ist, dass: < /p>
Wir erstellen untergeordneten Prozess < /li> Es hat einen Handler für Seufzer < /li> Wir stoppen das Kind mit SIGTSTP < /li> tector. />PoSix.1 erfordert, dass die gestoppte verarbeitete Seufzer (die wir handhaben) gesendet werden sollten (die wir handhaben), gefolgt von Sigcont < /li> Dies sollte den Seufzhandler des Kindes ausführen und fortfahren. Process < /li> < /ul> Wenn Sie dieses Programm aus der Hülle ausführen.$ ./a.out parent: pid = 6099, ppid = 2837, pgrp = 6099, tpgrp = 6099 child: pid = 6100, ppid = 6099, pgrp = 6099, tpgrp = 6099 $ SIGHUP received, pid = 6100 child: pid = 6100, ppid = 1, pgrp = 6099, tpgrp = 2837 read error 5 on controlling TTY < /code> Meine Ergebnisse sind jedoch: < /p>
Oder Seufzer wurde empfangen, aber das Kind hat es nicht gedruckt, es ist PID -Ausgabe (so dass es nicht richtig weiterging) < /li> < /ul> $ ./a.out parent: pid = 295709, ppid = 291330, pgrp = 295709, tpgrp = 295709 child: pid = 295710, ppid = 295709, pgrp = 295709, tpgrp = 295709 SIGHUP received, pid = 295710 < /code>
Oder Kind hat es nach Sigcont ausgedruckt, aber ich habe keinen Fehler bei Ty$ ./a.out parent: pid = 294722, ppid = 291330, pgrp = 294722, tpgrp = 294722 child: pid = 294723, ppid = 294722, pgrp = 294722, tpgrp = 294722 SIGHUP received, pid = 294723 child: pid = 294723, ppid = 2065, pgrp = 294722, tpgrp = 294722 [/code] Ich möchte eine Vorstellung davon bekommen, warum zwischen den Ergebnissen eine solche Varianz besteht.
Ich erstelle eine PYQT6 -Anwendung, die eine Sequenz im Hintergrund ausführen kann. Die Sequenz ist eine Unterklasse von QObject mit einer Run () -Methode, die von einem QThread aufgerufen wird. Hier...
Ich verwende Sourcery in meinem iOS-Projekt, um Mocks für ein Protokoll zu generieren, das einem anderen Protokoll mit zugehörigen Typen entspricht. Trotz konsistenter Eingabe ist die generierte...
Ich verwende Sourcery in meinem iOS-Projekt, um Mocks für ein Protokoll zu generieren, das einem anderen Protokoll mit zugehörigen Typen entspricht. Trotz konsistenter Eingabe ist die generierte...
Ich erstelle eine Azure Retrieval-Augmented Generation (RAG)-Anwendung mit Azure Cognitive Search, um in JSON-Dateien gespeicherte Daten zu Auszubildenden zu verarbeiten. Hier ist der allgemeine...
Ich erstelle eine Azure Retrieval-Augmented Generation (RAG)-Anwendung mit Azure Cognitive Search, um in JSON-Dateien gespeicherte Daten zu Auszubildenden zu verarbeiten. Hier ist der allgemeine...