In primul rand, multumesc pentru raspuns! Am efectuat modificarile, dar acum intampin o problema referitoare la terminarea procesului copil in cazul POPEN cu argumentul “r”, iar in cazul type = “w”, se obtin date incorecte in fisier. Am epuizat toate metodele cunoscute de debugging.
In cazul POPEN “r”, in terminal mai apare (uneori) mesajul "The process tried to write to a nonexistent pipe.” Multumesc pentru ajutor! > On 25 Mar 2019, at 20:30, Adrian Șendroiu <[email protected]> wrote: > > On Mon, 25 Mar 2019 at 16:55, Rares Folea via so <[email protected]> wrote: >> >> Buna ziua! >> >> Ma confrunt cu urmatoarea problema: >> Apelul fread pe un fisier deschis cu POPEN nu reuseste sa citeasca niciodata. >> >> In implementare, am creat pipe-ul, am marcat handlerul de citire din >> pipe(hRead) nemostenibil, am setat bInheritHandle = TRUE, >> am creat procesul nou si am inchis in procesul parinte handlerul de >> scriere(hWrite). In acest moment, apelurile Fread din checker >> nu reusesc sa citeasca. >> >> De asemenea, FWRITE desi pare sa execute syscall-urile necesare, nu produce >> outputul bun. >> >> Implementarea se regaseste pe gitlab, in directorul >> /l3-so-assignments/2-stdio/util/win. >> >> >> >> Multumesc frumos! > > Salut, > > La prima vedere par să fie mai multe greșeli: > - pe windows popen trebuie să execute cmd /C, nu sh -c. De asemenea, > argumentul lui cmd /C trebuie pus între ghilimele > - al doilea parametru al lui SetHandleInformation trebuie să fie > HANDLE_FLAG_INHERIT, nu 0. _______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
