Table of Contents

Tema Asistenți - Guardian process

Tema va fi rezolvată exclusiv de asistenți.

Scopul temei

Enunț

Precizări generale

Precizări GNU/Linux

Rulează sub forma de daemon

Guardian Process-ul va intercepta următoarele semnale

Pentru a simplifica implementarea, puteți presupune că procesul copil nu va ieși decât cu codul 0

Precizări Windows

Guardian Process-ul va intercepta următoarele evenimente

Întrebări

  1. Ce afișăm dacă un guardian deja rulează ?
    fprintf(stderr, "Guardian is already running\n");
  2. Ce afișăm dacă guardianul este rulat fără parametri în linia de comandă?
    fprintf(stderr, "Usage: nume_program arg1 arg2 ...\n");
  3. Ce afisam daca guardianul nu gaseste programul copil?
    fprintf(stderr, "The child program does not exist!\n");
  4. Se pot aplica redirectări pe programul copil?
    • Nu. Redirectările (>, 2> , &>) sunt ilegale
  5. Ce se întâmplă cu intrarea standard a procesului copil?
    • Se redirectează din /dev/null
  6. In ce mod deschidem fisierele pentru redirectarea procesului copil?
    • In modul append
  7. Ce se intampla daca numele programului exista ca fisier pe disc, dar nu este executabil?
    • Daca apelul functiei din familia exec va esua, atunci raportati ca nu exista fisierul respectiv
  8. Când guardianul oprește procesul copil, trebuie să oprească și copii acestuia?
    • Nu. Procesul copil nu va face spawn la alți copii
  9. Dacă utilizatorul rulează /bin/ls, unde se fac fişierele de log? În calea din care a fost pornit guardianul sau în /bin?
    • În calea din care a fost pornit guardianul
  10. Care este ordinea în care căutăm? Întâi în $PATH, sau întâi în directorul curent?
    • Ordinea în care guardianul se “uită” este stabilită de variabila $PATH; directorul curent se adaugă la sfârșitul șirului de directoare din $PATH
  11. Programul care este instrumetat va moşteni variabilele de mediu?
    • Da, va moșteni variabilele de mediu
  12. La restart, fişierele de logare vor fi trunchiate?
    • Nu. Se vor deschide cu append; checkerul va șterge fișierele stdout și stderr dintr-o sesiune
  13. Este recomandat să nu tratăm SIGSEGV și alte semnale?
    • NU, într-o aplicație reală aceste semnale trebuiesc tratate pentru că reprezintă o modalitate simplă de reparare a erorilor din codul vostru. Scopul temei nu este să ajungă o aplicație reală, ci una ușor de înțeles și care poate fi luată drept model de rezolvare pentru teme.

Rezolvare

Testare

Status

Comentarii

Comentarii legate de Tema Asist

~~DISCUSSION~~