From: nobu@... Date: 2014-06-16T07:05:29+00:00 Subject: [ruby-core:63187] [ruby-trunk - Bug #9944] [Assigned] in ruby for windows in "system" a redirection to append a file works incorrectly Issue #9944 has been updated by Nobuyoshi Nakada. Description updated Category set to platform/windows Status changed from Open to Assigned Assignee set to cruby-windows Target version set to current: 2.2.0 Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN to 2.0.0: REQUIRED, 2.1: REQUIRED Yes, it is Windows specific, because `O_APPEND` is not supported by the system, but implemented in runtime libraries. And "appending" and "seeking to the end at first" are not same. This is a known issue, as commented in test/ruby/test_process.rb:test_execopts_redirect, ~~~ruby if windows? # currently telling to child the file modes is not supported. ~~~ It is impossible to emulate it completely with multi-process, without the system support. For example, ~~~ $ echo foobar > t; ruby -e 'system("cat", in:["t", "a+"])' ~~~ should show "foobar" now including Windows, but it will be empty with your patch. Let us consider... ---------------------------------------- Bug #9944: in ruby for windows in "system" a redirection to append a file works incorrectly https://bugs.ruby-lang.org/issues/9944#change-47239 * Author: Dmitry Bolshakov * Status: Assigned * Priority: Normal * Assignee: cruby-windows * Category: platform/windows * Target version: current: 2.2.0 * ruby -v: ruby 2.0.0p481 (2014-05-08) [i386-mingw32] * Backport: 2.0.0: REQUIRED, 2.1: REQUIRED ---------------------------------------- ~~~ c:\Users\bdimych> c:\Users\bdimych> c:\Users\bdimych> c:\Users\bdimych> c:\Users\bdimych>C:\Ruby200\bin\ruby.exe -v ruby 2.0.0p481 (2014-05-08) [i386-mingw32] c:\Users\bdimych> c:\Users\bdimych> c:\Users\bdimych> c:\Users\bdimych>( echo first line & echo second line & echo third line ) > test.txt c:\Users\bdimych> c:\Users\bdimych> c:\Users\bdimych>type test.txt first line second line third line c:\Users\bdimych> c:\Users\bdimych> c:\Users\bdimych> c:\Users\bdimych>C:\Ruby200\bin\ruby.exe -e "system 'cmd', '/c', 'echo', 'blabla', :out => ['test.txt', 'a']" c:\Users\bdimych> c:\Users\bdimych> c:\Users\bdimych>type test.txt blabla ne second line third line c:\Users\bdimych> c:\Users\bdimych> c:\Users\bdimych> c:\Users\bdimych> c:\Users\bdimych> ~~~ --- ruby writes "blabla" in the beginning instead of appending windows 7 64 -- https://bugs.ruby-lang.org/