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
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()
todellaexec()
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.
system(3)
ei ole järjestelmäkutsu, se ' on kirjastofunktio, joka itse tekee muutaman järjestelmäpuhelut.system()
palaa aina.