Was ist der Unterschied zwischen Pause- und Wartesystemaufruf unter Linux?


Antwort 1:

Warten():

Header-Datei: #include

Prototyp: pid_t wait (int * stat_loc);

Der Systemaufruf wait führt dazu, dass ein übergeordneter Prozess angehalten wird, bis einer seiner untergeordneten Prozesse gestoppt wird. Der Aufruf gibt die PID des untergeordneten Prozesses zurück. Dies ist normalerweise ein untergeordneter Prozess, der beendet wurde. Mithilfe der Statusinformationen kann der übergeordnete Prozess den Exit-Status des untergeordneten Prozesses ermitteln, dh den Wert, der vom Hauptprozess zurückgegeben oder an den Exit übergeben wird. Wenn stat_loc kein Nullzeiger ist, werden die Statusinformationen an die Stelle geschrieben, auf die sie zeigen.

Pause():

Header: #include

Prototyp: int pause (nichtig);

Wenn Sie den Systemaufruf anhalten, wird das Programm einfach angehalten, bis ein Signal auftritt. Wenn ein Signal empfangen wird, wird jeder etablierte Handler ausgeführt und die Ausführung wird wie gewohnt fortgesetzt.

Bei einem Fehler wird -1 zurückgegeben (wenn das nächste empfangene Signal das Programm nicht beendet), wobei errno auf EINTR gesetzt wird, wenn es durch ein Signal unterbrochen wird.

Weitere Informationen: Lesen Sie die Manpages


Antwort 2:

pause () und wait () sind völlig unterschiedlich.

pause () unterbricht den Prozess einfach, damit er nicht mehr ausgeführt wird. Es könnte für immer so bleiben. Die Absicht ist, dass es durch den Empfang eines Signals (), entweder vorab angeordnet oder von einem anderen Prozess, wieder aufgeweckt wird. Früher gab es einen Systemaufruf sleep (), bei dem ein Prozess N Sekunden lang in den Ruhezustand versetzt wurde. Es wurde durch eine Kombination aus alarm () (um nach N Sekunden ein Signal zu senden) und pause () ersetzt.

wait () hat nichts mit pause () zu tun. Dies ist die Methode, mit der ein übergeordneter Prozess von der Beendigung seiner untergeordneten Prozesse erfährt. Es bedeutet, zu warten, bis eines meiner Kinder geht, und mich dann wissen zu lassen, welches…