| delorie.com/archives/browse.cgi | search |
| X-Recipient: | archive-cygwin AT delorie DOT com |
| DomainKey-Signature: | a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id |
| :list-unsubscribe:list-subscribe:list-archive:list-post | |
| :list-help:sender:mime-version:content-type:date:from:to:subject | |
| :message-id; q=dns; s=default; b=fE6lMqs2RaVBOur6hKS2vdAPyOPeaUn | |
| +ZWs338bwMhmKPhrXjPIG13KDyVCgUbX96KeiPWqmcEEFJPUxMcEzndWXQMOO40u | |
| hdWNQSNrU3aFdD4AItFgV/ATzBG9QDN6CIhlUFTiXussnNJSlyfqitWzKwlxsNDY | |
| B8CWYct5T+Dc= | |
| DKIM-Signature: | v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id |
| :list-unsubscribe:list-subscribe:list-archive:list-post | |
| :list-help:sender:mime-version:content-type:date:from:to:subject | |
| :message-id; s=default; bh=YxqSaXrCtkAFaW1aV0ARVM2Z//4=; b=S9ZQW | |
| 0tuNKzbmhAW3va53EU8QwVqwzp8E/ivlGGyn7WXQksCRUVuSVqVgYn1xEEkMUsu2 | |
| qM8OIz8o9zsC9CFwRk21+kuULdlyDETaQCG9wYUciFpUid7N0eV6qokpQgpzcDmA | |
| mDwJdgrFOegbeeW+868gX7SJS5zoJY0Vm+MQjg= | |
| Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
| List-Id: | <cygwin.cygwin.com> |
| List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
| List-Archive: | <http://sourceware.org/ml/cygwin/> |
| List-Post: | <mailto:cygwin AT cygwin DOT com> |
| List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
| Sender: | cygwin-owner AT cygwin DOT com |
| Mail-Followup-To: | cygwin AT cygwin DOT com |
| Delivered-To: | mailing list cygwin AT cygwin DOT com |
| Authentication-Results: | sourceware.org; auth=none |
| X-Spam-SWARE-Status: | No, score=-0.7 required=5.0 tests=BAYES_20,NORMAL_HTTP_TO_IP,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=D*@, steps, UD:cygwin.com, cygwincom |
| X-HELO: | lb1-smtp-cloud8.xs4all.net |
| MIME-Version: | 1.0 |
| Date: | Sun, 16 Dec 2018 17:31:32 +0100 |
| From: | Houder <houder AT xs4all DOT nl> |
| To: | cygwin AT cygwin DOT com |
| Subject: | /dev/fd/N not synonymous with file descriptor N; it is on Linux |
| Message-ID: | <0f030e809f063f5a5e64ff7a7a0c3227@xs4all.nl> |
| X-Sender: | houder AT xs4all DOT nl |
| User-Agent: | XS4ALL Webmail |
| X-IsSubscribed: | yes |
--=_32a5c9107b957f67274152ccd79cd4a9
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=US-ASCII;
format=flowed
L.S.,
/dev/fd/N not synonymous with file descriptor N; it is on Linux
64-@@ cat /dev/fd/0 <<\EOF
> Hi
> EOF
cat: /dev/fd/0: No such file or directory
fails on Cygwin; not on Linux.
Also see:
https://cygwin.com/ml/cygwin/2018-12/msg00028.html
( Bash heredoc on FD 3 )
Based on the output of strace on Linux, I composed an STC, that
duplicates
the steps taken by bash (and cat).
This STC succeeds on Linux, but fails on Cygwin.
What does the STC do:
- it creates a (temporary) file in the same way that bash does
- the file is written to, the file descriptor is closed and the file
unlinked
- however, before the file is unlinked, it is opened a second time,
like bash
would do
Next
- the file /dev/fd/N is opened, where N is the file descriptor that has
been
left open; this is what the "cat command" would do.
The "cat command" on Linux succeeds; it fails on Cygwin.
Regards,
Henri
STC attached (hopefully)
=====
--=_32a5c9107b957f67274152ccd79cd4a9
Content-Transfer-Encoding: base64
Content-Type: text/x-c;
name=stc.c
Content-Disposition: attachment;
filename=stc.c;
size=3256
Ly8gZ2NjIC1XYWxsIC1vIHN0YyBzdGMuYwoKI2luY2x1ZGUgPHN0ZGlvLmg+
CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5j
bHVkZSA8c3RyaW5nLmg+IC8vIHN0cmVycm9yKCkKI2luY2x1ZGUgPGVycm5v
Lmg+CiNpbmNsdWRlIDxmY250bC5oPgoKLyoKIExQSSwgNS4xMSBUaGUgL2Rl
di9mZCBEaXJlY3RvcnkgKExpbnV4IFByb2dyYW1taW5nIEludGVyZmFjZSwg
TWljaGFlbCBLZXJyaXNrKQogIkZvciBlYWNoIHByb2Nlc3MsIHRoZSBrZXJu
ZWwgcHJvdmlkZXMgdGhlIHNwZWNpYWwgdmlydHVhbCBkaXJlY3RvcnkgL2Rl
di9mZC4KICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBmaWxlbmFtZXMgb2Yg
dGhlIGZvcm0gL2Rldi9mZC9uLCB3aGVyZSBuIGlzIGEgbnVtYmVyCiAgY29y
cmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wZW4gZmlsZSBkZXNjcmlwdG9y
cyBmb3IgdGhlIHByb2Nlc3MuIgogIi4uLiBPcGVuaW5nIG9uZSBvZiB0aGUg
ZmlsZXMgaW4gdGhlIC9kZXYvZmQgZGlyZWN0b3J5IGlzIGVxdWl2YWxlbnQg
dG8gZHVwbGljYXRpbmcKICB0aGUgY29ycmVzcG9uZGluZyBmaWxlIGRlc2Ny
aXB0b3IuIC4uLiIKICIuLi4gVGhlIGZpbGVzIGluIHRoZSAvZGV2L2ZkIGRp
cmVjdG9yeSBhcmUgcmFyZWx5IHVzZWQgd2l0aGluIHByb2dyYW1zLiBUaGVp
ciBtb3N0CiAgY29tbW9uIHVzZSBpcyBpbiB0aGUgc2hlbGwuIE1hbnkgdXNl
ci1sZXZlbCBjb21tYW5kcyB0YWtlIGZpbGVuYW1lIGFyZ3VtZW50cywgYW5k
CiAgc29tZXRpbWVzIHdlIHdvdWxkIGxpa2UgdG8gcHV0IHRoZW0gaW4gYSBw
aXBlbGluZSBhbmQgaGF2ZSBvbmUgb2YgdGhlIGFyZ3VtZW50cyBiZQogIHN0
YW5kYXJkIGlucHV0IG9yIG91dHB1dCBpbnN0ZWFkLiAuLi4iCiAqLwoKdm9p
ZAplcnJFeGl0KGNvbnN0IGNoYXIgKnN0cikKewogICAgcHJpbnRmKCJpZCA9
ICVzLCBlcnJubyA9ICVkLCBlcnJzdHIgPSAlc1xuIiwgc3RyLCBlcnJubywg
c3RyZXJyb3IoZXJybm8pKTsKICAgIGZmbHVzaChzdGRvdXQpOwogICAgZXhp
dChFWElUX0ZBSUxVUkUpOwp9CgppbnQKbWFpbigpCnsKICAgIGludCBmZDEs
IGZkMiwgZmQzOwoKICAgIGVycm5vID0gMDsKICAgIC8vIGNyZWF0ZSBhIHRt
cGZpbGUgaW4gdGhlIHNhbWUgd2F5IHRoYXQgYmFzaCB3b3VsZCBkbyAuLi4K
ICAgIGZkMSA9IG9wZW4oIi90bXAvc3RjLnR4dCIsIE9fV1JPTkxZfE9fQ1JF
QVR8T19FWENMfE9fVFJVTkMsIDA2MDApOwogICAgaWYgKGZkMSA9PSAtMSkK
ICAgICAgICBlcnJFeGl0KCJvcGVuZmQxIik7CgogICAgZXJybm8gPSAwOwog
ICAgaWYgKHdyaXRlKGZkMSwgIkhlbGxvLCB3b3JsZCFcbiIsIDE0KSA9PSAt
MSkgZXJyRXhpdCgid3JpdGVmZDEiKTsKCiAgICBlcnJubyA9IDA7CiAgICAv
LyBhbHNvIG9wZW4gdGhpcyB0bXBmaWxlIGZvciByZWFkaW5nIGxpa2UgYmFz
aCB3b3VsZCBkbyAuLi4KICAgIGZkMiA9IG9wZW4oIi90bXAvc3RjLnR4dCIs
IE9fUkRPTkxZKTsKICAgIGlmIChmZDIgPT0gLTEpCiAgICAgICAgZXJyRXhp
dCgib3BlbmZkMiIpOwoKICAgIGVycm5vID0gMDsKICAgIC8vIGNsb3NlIGZk
IDEgbGlrZSBiYXNoIHdvdWxkIGRvIC4uLgogICAgaWYgKGNsb3NlKGZkMSkg
PT0gLTEpIGVyckV4aXQoImNsb3NlZmQxIik7CgogICAgZXJybm8gPSAwOwog
ICAgLy8gZGVsZXRlIHRoZSB0bXBmaWxlIGxpa2UgYmFzaCB3b3VsZCBkbyAu
Li4KICAgIGlmICh1bmxpbmsoIi90bXAvc3RjLnR4dCIpID09IC0xKSBlcnJF
eGl0KCJ1bmxpbmsiKTsKCiAgICAvLyBrbHVkZ2U6IGNvbXBvc2UgYSBzdHJp
bmcgKHVzaW5nIGZkMikgcmVwcmVzZW50aW5nICJ0aGUgZGV2aWNlIGZpbGUi
CiAgICAvLyBpbiAvZGV2L2ZkIChhIHN5bWxuayB0byAvcHJvYy9zZWxmL2Zk
KSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciBmZCAyCiAgICAvLyB0aGF0IGlz
IHN0aWxsIG9wZW4gLi4uCiAgICBjaGFyIGRldmZpbGVbMTJdID0gIi9kZXYv
ZmQvIjsgZGV2ZmlsZVs4XSA9IGZkMiArIDB4MzA7IGRldmZpbGVbOV0gPSAn
XDAnOwoKICAgIHByaW50ZigiZGV2ZmlsZSA9ICVzXG4iLCBkZXZmaWxlKTsK
CiAgICBlcnJubyA9IDA7CiAgICAvLyBvcGVuIHRoaXMgZGV2aWNlIGZpbGU7
IGl0IHN1Y2NlZWRzIG9uIExpbnV4LCBidXQgZmFpbHMgb24gQ3lnd2luIC4u
LgogICAgZmQzID0gb3BlbihkZXZmaWxlLCBPX1JET05MWSk7CgogICAgY29u
c3QgY2hhciAqaWQgPSAib3BlbmZkMyI7CiAgICBpZiAoZmQzID09IC0xKSB7
CiNpZiAwCiAgICAgICAgZXJyRXhpdChpZCk7CiNlbHNlCglwcmludGYoIiVz
OiBDYW5ub3Qgb3BlbiEsIGlkID0gJXMsIGVycm5vID0gJWQsIGVycm1zZyA9
ICVzXG4iLCBkZXZmaWxlLAogICAgICAgICAgICBpZCwgZXJybm8sIHN0cmVy
cm9yKGVycm5vKSk7CiAgICAgICAgY2hhciBidWZbMTZdID0geyAwIH07CiAg
ICAgICAgLy8gaG93ZXZlciB0aGUgZmlsZSB0byB3aGljaCB0aGUgc3ltbG5r
IHJlZmVycywgaXMgc3RpbGwgcHJlc2VudCAuLi4KICAgICAgICAvLyBROiBk
b2VzIEN5Z3dpbiBhdHRlbXB0IHRvIHJlYWQgdGhlIC90bXAgZGlyZWN0b3J5
PyAoYW4gYXR0ZW1wdCB0aGF0CiAgICAgICAgLy8gICAgd2lsbCBmYWlsLCBi
ZWNhdXNlIHRoZSBmaWxlIGhhcyBiZWVuIHVubGlua2VkKQogICAgICAgIC8v
IGl0IGFwcGVhcnMgdGhhdCBhIHJlYWRsaW5rIG9mIGEgZmlsZSBpbiAvZGV2
L2ZkIG11c3QgYmUgZGl2ZXJ0ZWQgdG8KICAgICAgICAvLyB0aGUgb3BlbiBm
aWxlIGRlc2NyaXB0b3Igb2YgdGhlIHByb2Nlc3MgLi4uCiAgICAgICAgZXJy
bm8gPSAwOwogICAgICAgIGlmIChyZWFkKGZkMiwgYnVmLCBzaXplb2YoYnVm
KSApID09IC0xKSBlcnJFeGl0KCJyZWFkZmQyIik7CiAgICAgICAgcHJpbnRm
KCJidWYgPSAlcyIsIGJ1Zik7CiAgICAgICAgaWYgKGNsb3NlKGZkMikgPT0g
LTEpIHByaW50ZigiY2xvc2VmZDIgZmFpbGVkXG4iKTsKICAgICAgICBleGl0
KEVYSVRfRkFJTFVSRSk7CiNlbmRpZgogICAgfQoKICAgIGNoYXIgYnVmWzE2
XSA9IHsgMCB9OwogICAgZXJybm8gPSAwOwogICAgaWYgKHJlYWQoZmQzLCBi
dWYsIHNpemVvZihidWYpICkgPT0gLTEpIGVyckV4aXQoInJlYWRmZDMiKTsK
ICAgIHByaW50ZigiYnVmID0gJXMiLCBidWYpOwoKICAgIGlmIChjbG9zZShm
ZDMpID09IC0xKSBwcmludGYoImNsb3NlZmQzIGZhaWxlZFxuIik7CiAgICBp
ZiAoY2xvc2UoZmQyKSA9PSAtMSkgcHJpbnRmKCJjbG9zZWZkMiBmYWlsZWRc
biIpOwp9CgovLz09PT09Cg==
--=_32a5c9107b957f67274152ccd79cd4a9
Content-Type: text/plain; charset=us-ascii
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
--=_32a5c9107b957f67274152ccd79cd4a9--
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |