From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 73257 invoked by alias); 16 Dec 2018 16:31:37 -0000 Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Received: (qmail 73246 invoked by uid 89); 16 Dec 2018 16:31:36 -0000 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 Received: from lb1-smtp-cloud8.xs4all.net (HELO lb1-smtp-cloud8.xs4all.net) (194.109.24.21) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 16 Dec 2018 16:31:34 +0000 Received: from webmail.xs4all.nl ([IPv6:2001:888:0:22:194:109:20:195]) by smtp-cloud8.xs4all.net with ESMTPA id YZKGgRMp5AdxGYZKGgnPav; Sun, 16 Dec 2018 17:31:32 +0100 Received: from a83-162-234-136.adsl.xs4all.nl ([83.162.234.136]) by webmail.xs4all.nl with HTTP (HTTP/1.1 POST); Sun, 16 Dec 2018 17:31:32 +0100 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_32a5c9107b957f67274152ccd79cd4a9" Date: Sun, 16 Dec 2018 16:31:00 -0000 From: Houder To: cygwin@cygwin.com Subject: /dev/fd/N not synonymous with file descriptor N; it is on Linux Message-ID: <0f030e809f063f5a5e64ff7a7a0c3227@xs4all.nl> X-Sender: houder@xs4all.nl User-Agent: XS4ALL Webmail X-IsSubscribed: yes X-SW-Source: 2018-12/txt/msg00125.txt.bz2 --=_32a5c9107b957f67274152ccd79cd4a9 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Content-length: 956 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 Content-length: 4417 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 Content-length: 219 -- 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--