<p><span>Dear all,
 my linux application needs to start a big number (400) of processes. Each process is a mono application. 
I found the when trying to run more then 255 processes the runtime generates an exception.</span><br><span>
The problem does NOT arise when executing other processes, like e.g. bash.

</span></p><h2><span>Example</span></h2><p><span>
</span><span>
The following two executables classes are a simple proof of concept. 
Just compile the second class and put in into the /tmp folder</span><span>
</span></p><h2><span>MAIN PROGRAM</span></h2><p><span>
</span><code><span>
</span></code></p><pre><span>using System;
using System.Collections.Generic;
using System.Text;

using System.Diagnostics;

namespace CrashTester
{
    class Program
    {
        static void Main(string[] args)
        {
            ///In the real application this dictionary
            /// contains useful data. When a process dies,
            /// it can be started again with the same input parameters
            
            try
            {
                for (int i = 0; i &lt; 260; i++)
                {
                    Console.Error.WriteLine("STARTING PROCESS: "+(i+1).ToString());
                    ProcessStartInfo startinfo = new ProcessStartInfo();
                    startinfo.FileName = "/usr/local/bin/mono";                                
                    startinfo.Arguments = "/tmp/ToCrash.exe "+(i+1).ToString();
                    startinfo.UseShellExecute = false;
                    startinfo.RedirectStandardError = false;
                    startinfo.RedirectStandardOutput = false;
                    Process p = new Process();
                    p.StartInfo = startinfo;                    
                    p.Start();
                }
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine(ex.Message);
                Console.Error.WriteLine("ERROR IN START PROCESS!");
            }
                        
            Console.ReadKey();

        }
    }
}

</span></pre><p><span>
</span><span>
</span></p><h2><span>CHILD PROCESSES</span></h2><p><span>
</span></p><pre><code><span>
using System;
using System.Collections.Generic;
using System.Text;

namespace ToCrash
{
    class Program
    {
        static void Main(string[] args)
        {
                        if((args!=null)&amp;&amp;(args.Length&gt;0))
                        {
              Console.WriteLine(args[0]);
                        }
            Console.ReadLine();
        }
    }
}</span></code></pre><div style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;" id="_mcePaste">&nbsp;</div>