Differences

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

Link to this comparison view

so:teme:tema-2 [2020/03/11 02:36]
george.muraru [Rularea de procese]
so:teme:tema-2 [2022/11/06 17:50] (current)
ionut.mihalache1506
Line 1: Line 1:
 +<​hidden>​
 ====== Tema 2 Bibliotecă stdio ====== ====== Tema 2 Bibliotecă stdio ======
  
 <note important>​ <note important>​
-  * Dată publicare: **14.03.2019** +  * Dată publicare: **24.03.2022** 
-  * <​html><​b><​span style="​color:​blue;">​Deadline</​span></​b></​html>:​ **03.04.2019, ora 23:55** +  * <​html><​b><​span style="​color:​blue;">​Deadline</​span></​b></​html>:​ **7.04.2022, ora 23:55** 
-  * <​html><​b><​span style="​color:​red;">​Deadline hard</​span></​b></​html>:​ **10.04.2019, ora 23:55**+  * <​html><​b><​span style="​color:​red;">​Deadline hard</​span></​b></​html>:​ **10.04.2022, ora 23:55**
 </​note>​ </​note>​
  
Line 28: Line 29:
 **Asigurați-vă că responsabilii de teme au drepturi de citire asupra repo-ului vostru**. **Asigurați-vă că responsabilii de teme au drepturi de citire asupra repo-ului vostru**.
  
-Ca să vă creați un repo de gitlab în instanța facultății:​ în repository-ul [[https://​github.com/​systems-cs-pub-ro/​so-assignments|so-assignments]] de pe Github se află un script Bash care vă ajută ​să vă creați un repository privat pe instanța ​de Gitlab a facultății,​ unde aveți la dispoziție 5 repository-uri private utile pentru ​teme. Urmăriți indicațiile din README și de pe [[:​so:​teme:​folosire-gitlab|wiki-ul SO]].+Pentru a folosi ''​git'',​ puteți ​să vă creați un repository ​privat pe [[https://​github.com/​|github]] și să dați drepturi ​de citire ​pentru ​**molecula2788**.
  
-Motivul pentru care încurajăm acest lucru este că responsabilii de teme se pot uita mai rapid pe [[https://gitlab.cs.pub.ro|Gitlab]] la temele voastre pentru a vă ajuta în cazul în care întâmpinați probleme/​bug-uri. Este mai ușor să primiți suport în rezolvarea problemelor implementării voastre dacă le oferiți responsabililor de teme acces la codul sursă pe [[https://​gitlab.cs.pub.ro|Gitlab]].+Motivul pentru care încurajăm acest lucru este că responsabilii de teme se pot uita mai rapid pe [[https://github.com/|github]] la temele voastre pentru a vă ajuta în cazul în care întâmpinați probleme/​bug-uri.
  
 Crash-course practic de git puteți găsi aici: [[http://​gitimmersion.com/​lab_01.html#​main_content|git-immersion]] Crash-course practic de git puteți găsi aici: [[http://​gitimmersion.com/​lab_01.html#​main_content|git-immersion]]
 +
 +**Dacă ați creat deja un repo privat pe [[https://​gitlab.cs.pub.ro|Gitlab]] puteți să-l folosiți în continuare pe acela**.
 </​note>​ </​note>​
  
 <note important>​ <note important>​
-Atât semnătura pentru funcția de comparare (veți vedea mai jos pentru ce vă trebuie), cât și testele publice care se rulează pe vmchecker se găsesc pe [[https://​github.com/​systems-cs-pub-ro/​so-assignments/​tree/​master/​2-stdio/|repo-ul so-assignments de pe Github]]:+Atât semnătura pentru funcția de comparare (veți vedea mai jos pentru ce vă trebuie), cât și testele publice care se rulează pe vmchecker se găsesc pe [[https://​github.com/​systems-cs-pub-ro/​so/​tree/​master/​assignments/​2-stdio|repo-ul so-assignments de pe Github]]:
  
 <code bash> <code bash>
-student@so:​~$ git clone https://​github.com/​systems-cs-pub-ro/​so-assignments.git +student@so:​~$ git clone https://​github.com/​systems-cs-pub-ro/​so 
-student@so:​~$ cd so-assignments/​2-stdio+student@so:​~$ cd assignments/​2-stdio
 </​code>​ </​code>​
  
Line 60: Line 63:
  
 Rezolvarea temei va trebui să genereze o bibliotecă dinamică numită ''​libso_stdio.so''/''​so_stdio.dll''​ care implementează header-ul Rezolvarea temei va trebui să genereze o bibliotecă dinamică numită ''​libso_stdio.so''/''​so_stdio.dll''​ care implementează header-ul
-[[https://​github.com/​systems-cs-pub-ro/​so-assignments/​blob/​master/​2-stdio/​util/​so_stdio.h|so_stdio.h]]. În acest header găsiți semnăturile functiilor exportate de biblioteca generată de voi.+[[https://​github.com/​systems-cs-pub-ro/​so/​blob/​master/​assignments/​2-stdio/​util/​so_stdio.h|so_stdio.h]]. În acest header găsiți semnăturile functiilor exportate de biblioteca generată de voi.
 ===== SO_FILE =====  ===== SO_FILE ===== 
  
Line 179: Line 182:
 Lansează un proces nou, care va executa comanda specificată de parametrul ''​command''​. Ca implementare,​ se va executa ''​sh -c command'',​ respectiv ''​cmd /C command'',​ folosind un pipe pentru a redirecta intrarea standard/​ieșirea standard a noului proces. Funcția întoarce o structură ''​SO_FILE''​ pe care apoi se pot face operațiile uzuale de citire/​scriere,​ ca și cum ar fi un fișier obișnuit. Lansează un proces nou, care va executa comanda specificată de parametrul ''​command''​. Ca implementare,​ se va executa ''​sh -c command'',​ respectiv ''​cmd /C command'',​ folosind un pipe pentru a redirecta intrarea standard/​ieșirea standard a noului proces. Funcția întoarce o structură ''​SO_FILE''​ pe care apoi se pot face operațiile uzuale de citire/​scriere,​ ca și cum ar fi un fișier obișnuit.
  
-Dacă apelul fork eșuează se va întoarce NULL.+Dacă apelul ​''​fork''/''​CreateProcess'' ​eșuează se va întoarce NULL.
  
 Valorile parametrului ''​type''​ pot fi: Valorile parametrului ''​type''​ pot fi:
Line 189: Line 192:
 </​code>​ </​code>​
  
-Se apelează doar pentru fișierele deschise cu ''​so_popen''​. Așteaptă terminarea procesului lansat de ''​so_popen''​ și eliberează memoria ocupată de structura ''​SO_FILE''​. Întoarce codul de ieșire al procesului (cel obținut în urma apelului ''​waitpid''/''​GetExitCodeProcess''​).+Se apelează doar pentru fișierele deschise cu ''​so_popen''​. Așteaptă terminarea procesului lansat de ''​so_popen''​ și eliberează memoria ocupată de structura ''​SO_FILE''​. Întoarce codul de ieșire al procesului (cel obținut în urma apelului ''​waitpid''/''​GetExitCodeProcess''​). Dacă apelul ''​waitpid''/''​WaitForSingleObject''​ eșuează, se va întoarce -1.
  
 ===== Precizări/​recomandări pentru implementare ===== ===== Precizări/​recomandări pentru implementare =====
Line 232: Line 235:
  
 <note tip> <note tip>
-Pentru a inspecta diferențele între output-ul bibliotecii voastre și fișierele de referință ale checker-ului setați ''​DO_CLEANUP=no''​ în scriptul [[https://​github.com/​systems-cs-pub-ro/​so-assignments/​blob/​master/​2-stdio/​checker/​_test/​run_test.sh | run_test.sh]].+Pentru a inspecta diferențele între output-ul bibliotecii voastre și fișierele de referință ale checker-ului setați ''​DO_CLEANUP=no''​ în scriptul ​run_test.sh pentru ​[[https://​github.com/​systems-cs-pub-ro/​so/​blob/​master/​assignments/​2-stdio/​checker-lin/​_test/​run_test.sh | Linux]] respectiv [[ https://​github.com/​systems-cs-pub-ro/​so/​blob/​master/​assignments/​2-stdio/​checker-win/​_test/​run_test.sh ​| Windows]].
 </​note>​ </​note>​
  
Line 247: Line 250:
  
 Resurse: Resurse:
-  * Header-ul [[https://​github.com/​systems-cs-pub-ro/​so-assignments/​blob/​master/​2-stdio/​util/​so_stdio.h|so_stdio.h]] expus de biblioteca ''​so_stdio''​.+  * Header-ul [[https://​github.com/​systems-cs-pub-ro/​so/​blob/​master/​assignments/​2-stdio/​util/​so_stdio.h|so_stdio.h]] expus de biblioteca ''​so_stdio''​.
  
 Pagina de Upload: Pagina de Upload:
   *[[https://​elf.cs.pub.ro/​vmchecker/​ui | vmchecker]]   *[[https://​elf.cs.pub.ro/​vmchecker/​ui | vmchecker]]
- 
-<note important>​ 
-[[https://​github.com/​systems-cs-pub-ro/​so-assignments|Repo-ul de pe Github]] conține și un script Bash care vă ajută să vă creați un repository privat pe instanța de [[https://​gitlab.cs.pub.ro|Gitlab]] a facultății,​ unde aveți la dispoziție 5 repository-uri private utile pentru teme. Urmăriți indicațiile din README și de pe [[:​so:​teme:​folosire-gitlab|wiki-ul SO]]. 
- 
-În plus, responsabilii de teme se pot uita mai rapid pe [[https://​gitlab.cs.pub.ro|Gitlab]] la temele voastre pentru a vă ajuta în cazul în care întâmpinați probleme/​bug-uri. Este mai ușor să primiți suport în rezolvarea problemelor implementării voastre dacă le oferiți responsabililor de teme acces la codul sursă pe [[https://​gitlab.cs.pub.ro|Gitlab]]. 
- 
-**Dacă ați folosit [[https://​gitlab.cs.pub.ro|Gitlab]] pentru realizarea temei, indicați în README link-ul către repository. Asigurați-vă că responsabilii de teme au drepturi de citire asupra repo-ului vostru**. 
- 
-</​note>​ 
  
 ===== Suport, întrebări și clarificări ===== ===== Suport, întrebări și clarificări =====
  
-Pentru întrebări sau nelămuriri legate de temă folosiți [[:so:​info:​lista-discutii|lista de discuții]] sau [[:​so:​info:​documentatie#​social_media|canalul de IRC]]. +Pentru întrebări sau nelămuriri legate de temă folosiți [[https://​curs.upb.ro/​2021/​mod/​forum/​view.php?​id=194420|forumul temei]]. 
 <note important>​ <note important>​
-Orice intrebare pe mailing list e recomandat ​să aibă subiectul ​de forma ''​[Tema2][Platforma] Titlul problemei''​Exemple de așa da:  +Orice intrebare pe forum **trebuie** ​să conțină o descriere cât mai clară a eventualei probleme. Întrebări ​de forma: "Nu merge XDe ce?" fără o descriere mai amănunțită vor primi un răspuns mai greu. Înainte să postați o întrebare pe forum citiți ​și celelalte întrebări(dacă există) pentru ​vedea dacă întrebarea voastră a fost deja adresată sub o altă formă(în cazul în care răspunsul din partea echipei vine mai greu este mai rapid să căutați voi deja printre întrebările existente).
- +
-   * [Tema2][Linux] Biblioteca nu se generează +
-   * [Tema2][Windows] No makefile found +
-   * [Tema2][General] Neclaritate enunt: Dimensiune buffer +
- +
-Exemple de așa nu:  +
- +
-   * Problema la tema 2 +
-   * eroare tema 2 +
-   * eroare la dimensiuni+
  
-Revedeți șsecțiunea de [[:​so:​info:​lista-discutii|guidelines pentru lista de discuții SO]]+**ATENȚIE** să nu postați imagini cu părțdin soluția voastră pe forumul pus la dispoziție sau orice alt canal public ​de comunicație. Dacă veți face acest lucru, vă asumați răspunderea dacă veți primi copiat pe temă.
  
 </​note>​ </​note>​
 +</​hidden>​
so/teme/tema-2.1583886987.txt.gz · Last modified: 2020/03/11 02:36 by george.muraru
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