Ich verstehe, dass während exec () nach der Ausführung unter Unix nicht zurückkehrt, system () möglicherweise oder möglicherweise Je nach Situation nicht zurückkehren. Aber kann jemand erklären, warum der Systemaufruf exec () nicht zurückkehrt und auch die Unterschiede zwischen exec () und system () im Unix-Betriebssystem

Kommentare

  • Beachten Sie, dass system(3) kein Systemaufruf ist, sondern ' eine Bibliotheksfunktion, die selbst einige macht Systemaufrufe.
  • system() gibt immer zurück.

Antwort

system () entspricht fork () + exec () + wait (); Dies bedeutet, dass ein Prozess, der system () ausführt, einen neuen Prozess erstellt und auf das Ende dieses Prozesses wartet. Der neue Prozess führt den Befehl in seiner eigenen Umgebung aus, wenn der Anrufer das untergeordnete Signal empfangen hat.

Weitere Informationen man exec man system

„exec ersetzt das aktuelle Prozessabbild durch ein neues Prozessabbild“, dh wenn es beendet wird, wird auch der Anrufer beendet, da der Anrufer zum neuen Prozess geworden ist.

Kommentare

  • Es gibt ' etwas mehr als das. system() tatsächlich exec() ist Ihre Standard-Shell und übergibt die Zeichenfolge an sie zur Verarbeitung, sodass Sie beispielsweise eine Pipeline und andere Shell-Funktionen verwenden können.

Antwort

Dies ist ein Systemaufruf unter Unix, der den aktuell ausgeführten Prozess durch Informationen aus dem Binärprogramm ersetzt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.