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

  • Všimněte si, že 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í.

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.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *