erscheint Es läuft eine externe ausführbare Datei von C in Unix zwei gemeinsamen Wegen zu sein, deran system() oder fork()/exec()?
system()
Anruf und
pid = fork()
switch(pid)
//switch statement based on return value of pid,
//one branch of which will include and exec() command
Gibt es einen Grund, einen fork/exec über System in der bevorzugen Fall, in dem sie funktional gleichwertig sind (der Elternprozess wartet, bis das Kind fertig ist, es werden keine komplexen Informationen vom Kind zurückgegeben)?
Ich fragte meinen Professor, was der Unterschied ist und er sagte 'System()' ist eine API für das Betriebssystem und 'fork/exec' sind Aufrufe auf Systemebene. Ist das wahr? Nach meinem Verständnis sind APIs für das Betriebssystem sicherer, da sie im Gegensatz zu Systemaufrufen zusätzliche Prüfungen enthalten können. – Celeritas
@Celeritas In gewissem Sinne (Systemaufrufe sind OS APIs auch), aber Ihre Schlussfolgerung ist falsch, wie ich in der Antwort argumentiert habe. 'system' fügt keine Schecks hinzu; es fügt unchecked Funktionalität hinzu. –