<div dir="auto">O fi ceva ce se optimizează aiurea din varii motive? Also, sper că folosești apeluri de sistem și nu chestii din <stdio.h>.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Mar 27, 2019, 08:11 Rares Folea via so <<a href="mailto:so@cursuri.cs.pub.ro">so@cursuri.cs.pub.ro</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Intradevar, am modificat gresit, imi cer scuze!<br>
<br>
Cu cele mentionate mai sus, am reusit sa implementez popen(…, “r”).<br>
Inca am probleme la popen(…, “w”), la care nu produce rezultatul corect.<br>
Numarul de apeluri de sistem este corect, dar comunicarea in pipe nu se realizeaza corect.<br>
<br>
Am observat insa, ca daca, introduc in fputc un printf “manual”,linia 266, datele se propaga corect prin pipe <br>
Functionarea este corecta insa doar daca fac printf(“[FPUTC] %c\n”, (unsigned char *) c).<br>
Daca fac printf(“[FPUTC]\n”) nu mai merge.<br>
<br>
De asemenea, nu pare corelat numarul de printfuri.<br>
Rezultatul este corect si daca folosesc 3 printfuri la rand in functie:<br>
<br>
printf(“[FPUTC] %c\n”, (unsigned char *) c)<br>
printf(“[FPUTC] %c\n”, (unsigned char *) c)<br>
printf(“[FPUTC] %c\n”, (unsigned char *) c)<br>
<br>
Incurc rau de tot handleurile?<br>
<br>
<br>
Multumesc frumos !!!<br>
<br>
<br>
> On 25 Mar 2019, at 22:45, Adrian Șendroiu <<a href="mailto:molecula2788@gmail.com" target="_blank" rel="noreferrer">molecula2788@gmail.com</a>> wrote:<br>
> <br>
> Nu ai modificat cum trebuie. Eu am zis "cmd /C" (nu \C, argumentele<br>
> toolurilor de windows se dau cu /) și să pui parametrul între<br>
> ghilimele (nu apostroafe).<br>
> <br>
> De asemenea, modul în care faci wait după process pare suspect.<br>
> WaitForSingleObject se face pe un HANDLE, mai exact hProcess din<br>
> structura PROCESS_INFORMATION.<br>
> <br>
> On Mon, 25 Mar 2019 at 22:10, Rares Folea <<a href="mailto:raresfolea97@gmail.com" target="_blank" rel="noreferrer">raresfolea97@gmail.com</a>> wrote:<br>
>> <br>
>> In primul rand, multumesc pentru raspuns!<br>
>> <br>
>> 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.<br>
>> <br>
>> In cazul POPEN “r”, in terminal mai apare (uneori) mesajul "The process tried to write to a nonexistent pipe.”<br>
>> <br>
>> <br>
>> <br>
>> Multumesc pentru ajutor!<br>
>> <br>
>> <br>
>> <br>
>>> On 25 Mar 2019, at 20:30, Adrian Șendroiu <<a href="mailto:molecula2788@gmail.com" target="_blank" rel="noreferrer">molecula2788@gmail.com</a>> wrote:<br>
>>> <br>
>>> On Mon, 25 Mar 2019 at 16:55, Rares Folea via so <<a href="mailto:so@cursuri.cs.pub.ro" target="_blank" rel="noreferrer">so@cursuri.cs.pub.ro</a>> wrote:<br>
>>>> <br>
>>>> Buna ziua!<br>
>>>> <br>
>>>> Ma confrunt cu urmatoarea problema:<br>
>>>> Apelul fread pe un fisier deschis cu POPEN nu reuseste sa citeasca niciodata.<br>
>>>> <br>
>>>> In implementare, am creat pipe-ul, am marcat handlerul de citire din pipe(hRead) nemostenibil, am setat bInheritHandle = TRUE,<br>
>>>> am creat procesul nou si am inchis in procesul parinte handlerul de scriere(hWrite). In acest moment, apelurile Fread din checker<br>
>>>> nu reusesc sa citeasca.<br>
>>>> <br>
>>>> De asemenea, FWRITE desi pare sa execute syscall-urile necesare, nu produce outputul bun.<br>
>>>> <br>
>>>> Implementarea se regaseste pe gitlab, in directorul /l3-so-assignments/2-stdio/util/win.<br>
>>>> <br>
>>>> <br>
>>>> <br>
>>>> Multumesc frumos!<br>
>>> <br>
>>> Salut,<br>
>>> <br>
>>> La prima vedere par să fie mai multe greșeli:<br>
>>> - pe windows popen trebuie să execute cmd /C, nu sh -c. De asemenea,<br>
>>> argumentul lui cmd /C trebuie pus între ghilimele<br>
>>> - al doilea parametru al lui SetHandleInformation trebuie să fie<br>
>>> HANDLE_FLAG_INHERIT, nu 0.<br>
>> <br>
<br>
_______________________________________________<br>
<a href="http://ocw.cs.pub.ro/courses/so/info/lista-discutii" rel="noreferrer noreferrer" target="_blank">http://ocw.cs.pub.ro/courses/so/info/lista-discutii</a></blockquote></div>