[so] [Tema2][Win] Eroare la citire POPEN

Adrian Șendroiu molecula2788 at gmail.com
Mon Mar 25 22:45:33 EET 2019


Nu ai modificat cum trebuie. Eu am zis "cmd /C" (nu \C, argumentele
toolurilor de windows se dau cu /) și să pui parametrul între
ghilimele (nu apostroafe).

De asemenea, modul în care faci wait după process pare suspect.
WaitForSingleObject se face pe un HANDLE, mai exact hProcess din
structura PROCESS_INFORMATION.

On Mon, 25 Mar 2019 at 22:10, Rares Folea <raresfolea97 at gmail.com> wrote:
>
> 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 <molecula2788 at gmail.com> wrote:
> >
> > On Mon, 25 Mar 2019 at 16:55, Rares Folea via so <so at cursuri.cs.pub.ro> 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.
>


More information about the so mailing list