[Mono-list] different filestream behavior of mono and .net

Jörg Würzer joerg.wuerzer@ixos.de
Mon, 16 Jun 2003 11:05:21 +0200


hello mono community,

i'm porting some com classes to win/.net in our company. therefore im
porting them so, they work with mono and .net. now i've noticed some
differences in behavior between mono and .net.

system: redhat 8, mono 0.24-2 (rpm install).

following code compiled with .net doesn't run under mono/linux but under
win/.net.

// -->
using System;
using System.IO;

namespace FileStreamTest
{
	class Class1
	{
		static void Main(string[] args)
		{
			FileStream fs = new
FileStream("test",FileMode.Append); //here is the difference
			StreamWriter sw = new StreamWriter(fs);
			sw.WriteLine("test");
			sw.Close();
			fs.Close();
		}
	}
}
// <--

under win/.net this code works fine, but under linux/mono following error
message below returns.

** (process:1983): WARNING **: Shared memory sanity check failed.

** (process:1983): WARNING **: Failed to attach shared memory! Falling back
to non-shared handles

Unhandled Exception: System.ArgumentException: Append streams can not be
read
in <0x00258> 00 System.IO.FileStream:.ctor
(string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,int,bool
)
in <0x00045> 00 System.IO.FileStream:.ctor (string,System.IO.FileMode)
in <0x0003a> 00 FileStreamTest.Class1:Main (string[])

so I explicitly must define FileAccess.Write in my FileStream object
creation. See below.

// -->
FileStream fs = new FileStream("test",FileMode.Append,FileAccess.Write);
// <--

this doesn't matter if known, but it's a different behavior.

have a nice day, Joerg Wuerzer