Chápu, že zatímco exec () se po provedení v Unixu nevrátí, system () může nebo může nevrátí se v závislosti na situaci. Může ale někdo vysvětlit, proč se systémové volání exec () nevrací, a také rozdíly mezi exec () a system () v operačním systému Unix
Komentáře
odpověď
system () je ekvivalentní s fork () + exec () + wait (); to znamená, když funkce spuštění systému () vytvoří nový proces a čeká na konec tohoto procesu. Nový proces provede příkaz ve vlastním prostředí, když je dokončen, volající obdrží podřízený signál.
Další informace man exec
„exec nahradí aktuální obraz procesu novým obrazem procesu“, to znamená, že při opuštění volajícího odejde také, protože volající se stal novým procesem.
Komentáře
- V tom je ' něco víc.
system()
Vlastněexec()
je váš výchozí shell a předá mu řetězec ke zpracování, takže můžete například použít kanál a další funkce prostředí.
Odpověď
Toto systémové volání v systému Unix OS, které nahradí aktuálně spuštěný proces informacemi z binárního programu.
system(3)
není systémové volání, ' sa funkce knihovny, která sama o sobě dělá několik systémová volání.system()
se vždy vrátí.