Differences

This shows you the differences between two versions of the page.

Link to this comparison view

so:teme:tema-asist [2013/01/31 21:57]
127.0.0.1 external edit
so:teme:tema-asist [2016/03/13 12:21] (current)
razvan.deaconescu
Line 4: Line 4:
  
 ===== Scopul temei ===== ===== Scopul temei =====
-  *Să ofere răspunsuri la următoarele întrebări+  * Să ofere răspunsuri la următoarele întrebări
   * Care este nivelul așteptat al soluțiilor temelor?   * Care este nivelul așteptat al soluțiilor temelor?
   * Cum arată o temă de 100p la SO?   * Cum arată o temă de 100p la SO?
-  ** Exemple de cod bine scris - programming techniques & coding style +    ​* Exemple de cod bine scris - programming techniques & coding style 
-  ** Makefile +    * Makefile 
-  ** README+    * README
  
  
Line 17: Line 17:
  
 ===== Precizări generale ===== ===== Precizări generale =====
-  *Programul se rulează astfel +  * Programul se rulează astfel 
-    ***$ ./guardian nume_program param1 param2 ...** +    * **$ ./guardian nume_program param1 param2 ...** 
-    *nume_program se va căuta în directoarele din $PATH și în directorul curent +    * nume_program se va căuta în directoarele din %%$%%PATH și în directorul curent 
-  *Guardianul va salva ieșirile procesului protejat, nume_program,​ în ./​nume_program.stdout și ./​nume_program.stderr +  * Guardianul va salva ieșirile procesului protejat, nume_program,​ în ./​nume_program.stdout și ./​nume_program.stderr 
-  *./guardian ls +  * ./guardian ls 
-    *ls.stdout +    * ls.stdout 
-    *ls.stderr +    * ls.stderr 
-  *O singură instanță de guardian poate rula, la un moment dat, pe un sistem +  * O singură instanță de guardian poate rula, la un moment dat, pe un sistem 
-    *./guardian sleep 100 +    * ./guardian sleep 100 
-    *./guardian pwd -- semnalează eroare +    * ./guardian pwd -- semnalează eroare 
-  *Interacțiunea utilizatorului cu aplicația se va face cu semnale, pe GNU/Linux, și evenimente, pe Windows +  * Interacțiunea utilizatorului cu aplicația se va face cu semnale, pe GNU/Linux, și evenimente, pe Windows 
-    ***Semnalele au frecvenţă suficient de mică încăt să poată fi tratate pe măsură ce apar** +    * **Semnalele au frecvenţă suficient de mică încăt să poată fi tratate pe măsură ce apar** 
-  *Operația de repornire constă în oprirea și pornirea procesului copil, cu argumentele anterioare +  * Operația de repornire constă în oprirea și pornirea procesului copil, cu argumentele anterioare 
-    *Oprirea constă în terminarea, posibil bruscă, a execuției programului copil +    * Oprirea constă în terminarea, posibil bruscă, a execuției programului copil 
-    *Pentru oprire se poate trimite orice semnal de genul: SIGSTOP, SIGTERM sau SIGKILL +    * Pentru oprire se poate trimite orice semnal de genul: SIGSTOP, SIGTERM sau SIGKILL 
-    *man 7 signal: "The signals **SIGKILL** and **SIGSTOP** cannot be caught, blocked, or ignored."​+    * man 7 signal: "The signals **SIGKILL** and **SIGSTOP** cannot be caught, blocked, or ignored."​
  
 ===== Precizări GNU/Linux ===== ===== Precizări GNU/Linux =====
Line 38: Line 38:
  
  ​Guardian Process-ul va intercepta următoarele semnale  ​Guardian Process-ul va intercepta următoarele semnale
-  *SIGCONT - repornește procesul copil +  * SIGCONT - repornește procesul copil 
-  *SIGINT - oprește procesul copil și se închide +  * SIGINT - oprește procesul copil și se închide 
-  *Restul semnalelor se pot ignora +  * Restul semnalelor se pot ignora 
-  *__Dacă ignorați SIGCHLD atunci s-ar putea să nu știți când copilul reusește să execute comanda și când nu__+  * __Dacă ignorați SIGCHLD atunci s-ar putea să nu știți când copilul reusește să execute comanda și când nu__
  
 Pentru a simplifica implementarea,​ puteți presupune că procesul copil nu va ieși decât cu codul 0 Pentru a simplifica implementarea,​ puteți presupune că procesul copil nu va ieși decât cu codul 0
-  *Este "​valid":​ **exit(EXIT_FAILURE);​** +  * Este "​valid":​ **exit(EXIT_FAILURE);​** 
-  *În realitate nu este corect, soluția lui LG este completă +  * În realitate nu este corect, soluția lui LG este completă 
-    *Dacă copilul nu reusește execuția programului dat ca parametru, atunci trimite un octet pe PIPE-ul cu părintele +    * Dacă copilul nu reusește execuția programului dat ca parametru, atunci trimite un octet pe PIPE-ul cu părintele 
-    *Dacă parintele reusește să citească octetul, atunci programul copil nu există+    * Dacă parintele reusește să citească octetul, atunci programul copil nu există
  
 ===== Precizări Windows ===== ===== Precizări Windows =====
-  **Poate rula sub formă de serviciu Windows** (nu este obligatoriu) +  ​**Poate rula sub formă de serviciu Windows** (nu este obligatoriu) 
-  *Windows Service este un concept ce ține de Windows programming,​ nu de OS programming+  * Windows Service este un concept ce ține de Windows programming,​ nu de OS programming
  
  ​Guardian Process-ul va intercepta următoarele evenimente  ​Guardian Process-ul va intercepta următoarele evenimente
-  *CTRL_BREAK_EVENT - repornește procesul copil +  * CTRL_BREAK_EVENT - repornește procesul copil 
-  *CTRL_C_EVENT - oprește procesul copil și se închide +  * CTRL_C_EVENT - oprește procesul copil și se închide 
-  *Restul evenimentelor se pot ignora+  * Restul evenimentelor se pot ignora
  
  
Line 62: Line 62:
 ===== Întrebări ===== ===== Întrebări =====
  
-Ce afișăm dacă un guardian deja rulează ?<​code>​+  - Ce afișăm dacă un guardian deja rulează ?<​code>​
 fprintf(stderr,​ "​Guardian is already running\n"​);​ fprintf(stderr,​ "​Guardian is already running\n"​);​
 </​code>​ </​code>​
-Ce afișăm dacă guardianul este rulat fără parametri în linia de comandă?<​code>​+  - Ce afișăm dacă guardianul este rulat fără parametri în linia de comandă?<​code>​
 fprintf(stderr,​ "​Usage:​ nume_program arg1 arg2 ...\n"​);​ fprintf(stderr,​ "​Usage:​ nume_program arg1 arg2 ...\n"​);​
 </​code>​ </​code>​
-Ce afisam daca guardianul nu gaseste programul copil?<​code>​+  - Ce afisam daca guardianul nu gaseste programul copil?<​code>​
 fprintf(stderr,​ "The child program does not exist!\n"​);​ fprintf(stderr,​ "The child program does not exist!\n"​);​
 </​code>​ </​code>​
-Se pot aplica redirectări pe programul copil? +  - Se pot aplica redirectări pe programul copil? 
-#* Nu. Redirectările (>, 2> , &>) sunt ilegale +    * Nu. Redirectările (>, 2> , &>) sunt ilegale 
-Ce se întâmplă cu intrarea standard a procesului copil? +  ​- ​Ce se întâmplă cu intrarea standard a procesului copil? 
-#* Se redirectează din /dev/null +    * Se redirectează din /dev/null 
-In ce mod deschidem fisierele pentru redirectarea procesului copil? +  ​- ​In ce mod deschidem fisierele pentru redirectarea procesului copil? 
-#* In modul append +    * In modul append 
-Ce se intampla daca numele programului exista ca fisier pe disc, dar nu este executabil?​ +  ​- ​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 +    * Daca apelul functiei din familia exec va esua, atunci raportati ca nu exista fisierul respectiv 
-Când guardianul oprește procesul copil, trebuie să oprească și copii acestuia? +  ​- ​Când guardianul oprește procesul copil, trebuie să oprească și copii acestuia? 
-#* Nu. Procesul copil nu va face spawn la alți copii +    * Nu. Procesul copil nu va face spawn la alți copii 
-Dacă utilizatorul rulează /bin/ls, unde se fac fişierele de log? În calea din care a fost pornit guardianul sau în /bin? +  ​- ​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 +    * În calea din care a fost pornit guardianul 
-Care este ordinea în care căutăm? Întâi în $PATH, sau întâi în directorul curent?  +  ​- ​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 +    * Ordinea în care guardianul se "​uită"​ este stabilită de variabila ​%%$%%PATH; directorul curent se adaugă la sfârșitul șirului de directoare din %%$%%PATH 
-Programul care este instrumetat va moşteni variabilele de mediu? +  ​- ​Programul care este instrumetat va moşteni variabilele de mediu? 
-#* Da, va moșteni variabilele de mediu +    * Da, va moșteni variabilele de mediu 
-La restart, fişierele de logare vor fi trunchiate?​ +  ​- ​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 +    * Nu. Se vor deschide cu append; checkerul va șterge fișierele stdout și stderr dintr-o sesiune 
-Este recomandat să nu tratăm SIGSEGV și alte semnale? +  ​- ​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 ​temele de casă+    * **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 ===== ===== Rezolvare =====
-  *{{:​teme:​tema0_v1.0.zip|Arhiva inițială cu soluții}} +  *{{so:​teme:​tema0_v1.0.zip|Arhiva inițială cu soluții}} 
-  *{{:​teme:​tema0_v1.1.zip|Arhiva actualizată cu soluții}}+  *{{so:​teme:​tema0_v1.1.zip|Arhiva actualizată cu soluții}}
  
 ===== Testare ===== ===== Testare =====
   *6 teste publice   *6 teste publice
-  *Pagina de descriere a [[teme/​tema-asist/​teste|testelor]]+  *Pagina de descriere a [[:so:teme/​tema-asist/​teste|testelor]]
  
 ===== Status ===== ===== Status =====
Line 122: Line 122:
  
 ===== Comentarii ===== ===== Comentarii =====
-[[teme/​tema-asist/​comentarii|Comentarii legate de Tema Asist]]+[[:so:teme/​tema-asist/​comentarii|Comentarii legate de Tema Asist]]
  
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
so/teme/tema-asist.1359662221.txt.gz · Last modified: 2013/02/19 09:31 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0