Jeg forstår at mens exec () ikke kommer tilbake etter at den er utført i Unix, kan system () kanskje eller kan ikke returnere avhengig av situasjonen.Men kan noen forklare hvorfor exec () systemanrop ikke kommer tilbake, og også forskjellene mellom exec () og system () i Unix-operativsystemet

Kommentarer

  • Merk at system(3) ikke er et systemanrop, det ' en biblioteksfunksjon som i seg selv gir noen få systemanrop.
  • system() returnerer alltid.

Svar

system () tilsvarer gaffel () + exec () + vent (); Dette betyr at når et prosesskjørt system () -funksjon skaper det en ny prosess og venter på slutten av denne prosessen. Den nye prosessen utfører kommandoen i sitt eget miljø når den er ferdig, mottar den som ringer signalet barnet.

For ytterligere informasjon man exec man system

«exec erstatter det nåværende prosessbildet med et nytt prosessbilde», dette betyr at når det går ut, ringer utgangen også ettersom innringer har blitt den nye prosessen. >

Kommentarer

  • Det ' sier litt mer enn det. system() faktisk exec() er standardskallet ditt, og sender strengen til det for å behandle, slik at du for eksempel kan bruke en rørledning og andre skallfunksjoner.

Svar

Dette er et systemanrop i Unix OS som erstatter den nåværende prosessen med informasjon fra det binære programmet.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *