Ymmärrän, että vaikka exec () ei palaa sen jälkeen, kun se on suoritettu Unixissa, system () voi tai voi ei palaa tilanteen mukaan. Mutta voiko kukaan selittää, miksi exec () -järjestelmäkutsu ei palaa, ja myös exec (): n ja system (): n erot Unix-käyttöjärjestelmässä

Kommentit

  • Huomaa, että system(3) ei ole järjestelmäkutsu, se ' on kirjastofunktio, joka itse tekee muutaman järjestelmäpuhelut.
  • system() palaa aina.

Vastaa

system () vastaa haarukkaa () + exec () + wait (); tämä tarkoittaa, että kun prosessiajo järjestelmä () toimii, se luo uuden prosessin ja odottaa prosessin loppua. Uusi prosessi suorittaa komennon omassa ympäristössä, kun se on valmis, soittaja vastaanottaa signaalilapsen.

Lisätietoja man exec man system

”exec korvaa nykyisen prosessikuvan uudella prosessikuvalla”, tämä tarkoittaa, että kun se poistuu, soittaja poistuu myös, kun soittajasta on tullut uusi prosessi.

Kommentit

  • Siellä ' on vähän enemmän. system() todella exec() s oletuskäsi ja välittää merkkijonon käsiteltäväksi, jotta voit esimerkiksi käyttää putkilinjaa ja muita kuoren ominaisuuksia.

Vastaus

Tämä on Unix-käyttöjärjestelmän järjestelmäkutsu, joka korvaa käynnissä olevan prosessin binaarisen ohjelman tiedoilla.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *