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

  • Merk op dat system(3) geen systeemaanroep is, het is ' een bibliotheekfunctie die zelf een aantal systeemaanroepen.
  • system() keert altijd terug.

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 eigenlijk exec() 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.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *