10. praktikum - fork ja exec (itv0020)
Soovite vaadata erinevaid programmide käivitumise viise
Selle labori eesmärgiks on kolme programmi abil vaadata kuidas programmide käivitumine töötab. Ühtlasi on see kõik liiga lihtne.
Ülesanne
Kirjutage kolm programmi.
Esimene programm — execute — käivitab programmi "stopper" argumendiga "-s" samast kataloogist, kus viibib. (exec() niisama)
Teine programm — runner — käivitab programmi "stopper" argumendiga "-s" samast kataloogist, kus viibib ning jääb ootama selle lõpetamist. Pärast programmi lõpetamist trükib välja: "runner: Stopped". (exec() + wait())
Kolmas programm — backgrounder — käivitab samuti programmi "stopper" argumendiga "-s", kuid ei jää selle lõpetamist ootama: väljub niisama. (Slaididel analoogne deemoniga — st fork() ja exec() lapsprotsessi puhul, vanemal lihtsalt exit() )
Backgrounder peaks käivitamisel trükkima enda Protsessi ID ning seejärel uue loodud protsessi ID.
NB! Kui soovite kompileerida ainult ühte programmi, kirjutage "make stopper" või "make runner".
Prototüüp
Prototüübi (programmi stopper ja makefile'id) leiate dijkstra kataloogist /export/samba/itv0020/ . Kopeerimiskäsk parajasti aktiivsesse kataloogi:
cp /export/samba/itv0020/prak10.tar.gz .
Lahtipakkimiskäsk:
tar -xzvf prak10.tar.gz
Niisama kasulikku infot protsesside juhtimisest
Jooksvat programmi on võimalik seisatada vajutades konsoolil CTRL+S — Selle peale jääb programm lihtsalt seisma (läheb Stopped olekusse). Programmi taaskäivitamiseks vajutage CTRL+Q.
CTRL+Z paneb programmi taustale seisma. Kukute konsoolile ning saate käivitada midagi muud. Seismajäetud programmide uuesti käivitamiseks võite kasutada käske "fg" - foreground ning "bg" - background, vastavalt sellele mis te soovite et programm teeks. See on üks viis tüütute programmide järgi mitte oodata.
fg on kasulik näiteks olukorras, kus soovite tekstiredaktori korraks kinni panna, midagi vaadata, ning siis uuesti käima panna.
bg kasutamine on õigustatud näiteks puhul, kui avastate, et 300GB failide kustutamine võtab rohkem aega kui eeldasite.
Kui soovite kohe programmi taustale käima panna, kirjutage programminimi ja ampersand (&). Näiteks: ./stopper -s &
Võite kogu eelnevat programmiga stopper testida.