[so] [SO][Tema 2][Windows] Echo,bad file descriptor

Alexandru Militaru alexandru.cmilitaru at gmail.com
Sun Mar 25 20:16:07 EEST 2018


Salut,

Mulțumesc mult, am rezolvat. Am folosit GENERIC_WRITE și
SetFilePointer în loc de FILE_APPEND_DATA. Îmi rămâne, totuși,
problema la redirectare simplă, când se păstrează reminiscențe din
comanda anterioară. O să mai fac debug să văd care e problema.

2018-03-25 18:52 GMT+03:00 Adrian Șendroiu <molecula2788 at gmail.com>:
> 2018-03-24 17:49 GMT+02:00 Alexandru Militaru via so <so at cursuri.cs.pub.ro>:
>> Salut,
>>
>> Am aceeași problemă. Oricum aș încerca să fac append, primesc ”bad file
>> descriptor”. O problemă ciudată apare și când fac redirectare simplă (>)
>> într-un fișier de mai multe ori la rând. Un "cat f.txt" dat după un "pwd >
>> f.txt; ls > f.txt" va afisa output-ul comenzii ls + niște reminiscențe
>> nesuprascrise din comanda pwd. Închid Handle-urile și deschid fișierele cu
>> permisiuni, zic eu, bune. Care ar putea fi problema?
>>
>> Am încărcat tema pe gitlab. Userul meu este cmilitaru2501.
>>
>> Mulțumesc!
>
> Salut,
>
> Problema la append este că deschizi fișierul cu FILE_APPEND_DATA. Ceea
> ce nu este greșit în sine, ci este mai degrabă o problemă de cygwin.
> Cumva în procesul copil (ls), cygwin ajunge să creadă că stdout-ul
> este deschis read-only, din cauza faptului că el se uită doar după
> valorile FILE_READ_DATA și FILE_WRITE_DATA, nu și FILE_APPEND_DATA
> [1]. Soluția din păcate este să renunți la modul append și să deschizi
> fișierul cu GENERIC_WRITE (care implică și FILE_WRITE_DATA).
>
> [1] https://cygwin.com/git/gitweb.cgi?p=newlib-cygwin.git;a=blob;f=winsup/cygwin/dtable.cc;h=9ebd45c063372e7d931a7c68895a574802a005d0;hb=HEAD#l381


More information about the so mailing list