Megértem, hogy bár az exec () nem tér vissza, miután végrehajtotta a Unix-ot, a system () lehet vagy lehet nem tér vissza a helyzettől függően. De bárki meg tudja magyarázni, miért nem tér vissza az exec () rendszerhívás, valamint az exec () és a system () közötti különbségeket a Unix operációs rendszerben
Megjegyzések
Válasz
A system () egyenértékű a fork () + exec () + wait (); ez azt jelenti, hogy amikor a process run system () függvény új folyamatot hoz létre, és megvárja ennek a folyamatnak a végét. Az új folyamat a parancsot a saját környezetében hajtja végre, amikor befejeződött, a hívó megkapja a jelzőt.
További információ: man exec
man system
“Az exec az aktuális folyamatképet új folyamatképpel helyettesíti”, ez azt jelenti, hogy amikor kilép a hívó fél kilép, amikor a hívó új folyamat lett.
Megjegyzések
- ' ennél többet is tartalmaz.
system()
valójábanexec()
s az alapértelmezett héj, és átadja neki a karakterláncot a feldolgozáshoz, így például használhat egy folyamatot és más shell funkciókat.
Válasz
Ez egy olyan rendszerhívás a Unix operációs rendszerben, amely a jelenleg futó folyamatot a bináris program információival helyettesíti.
system(3)
nem rendszerhívás, hanem ' olyan könyvtárfunkció, amely maga is létrehoz néhányat rendszerhívások.system()
mindig visszatér.