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/