Ik begrijp dat hoewel exec () niet terugkeert nadat het in Unix is uitgevoerd, system () wel of niet kan niet terugkeren afhankelijk van de situatie. maar kan iemand uitleggen waarom exec () systeemaanroep niet terugkeert en ook de verschillen tussen exec () en system () in Unix-besturingssysteem
Opmerkingen
Antwoord
system () is gelijk aan fork () + exec () + wait (); dit betekent dat wanneer een proces de functie system () uitvoert, het een nieuw proces maakt en op het einde van dit proces wacht. Het nieuwe proces voert het commando uit in zijn eigen omgeving, wanneer het klaar is, ontvangt de beller het signaal kind.
Voor meer informatie man exec
man system
“exec vervangt de huidige procesafbeelding door een nieuwe procesafbeelding”, dit betekent dat wanneer het weggaat, de beller ook vertrekt, aangezien de beller het nieuwe proces is geworden.
Reacties
- Er is ' iets meer dan dat.
system()
is eigenlijkexec()
s uw standaard shell, en geeft de string door om deze te verwerken, zodat u bijvoorbeeld een pijplijn en andere shell-functies kunt gebruiken.
Answer
Dit is een systeemaanroep in Unix OS die het momenteel lopende proces vervangt door informatie uit het binaire programma.
system(3)
geen systeemaanroep is, het is ' een bibliotheekfunctie die zelf een aantal systeemaanroepen.system()
keert altijd terug.