> Dilton McGowan II diltonm at yahoo.com 
> Tue Aug 16 19:38:50 EDT 2005
> 
> Using the code from your original post, substituting 
> ls for wget works. "standard" is not always standard.
> IIRC, some programs output to screen memory for speed
> rather than through the BIOS character IO subsystem.


So I have discovered, and that was what lead to my confusion. The
following code using wget does, however work. You will notice that I am
reading the stream from stderr. When I do this I am able to retrieve
the status information that wget normally writes to the console.

using System;
using System.Diagnostics;
using System.IO;

class MainClass
{
        public static void Main(string[] args)
        {
                ProcessStartInfo psi = new ProcessStartInfo();
                psi.FileName = "/usr/bin/wget";
                //
                //change the pths to one of your choosing
                //
                psi.Arguments = "-m -nd 
--directory-prefix=/home/tracy/Downloads/test 
--input-file=/home/tracy/Downloads/test/wgetlist";

                psi.RedirectStandardInput = false;
                psi.RedirectStandardOutput = false;
                psi.RedirectStandardError = true;
                
                //place the following text in a file name wgetlist
                //ftp://[EMAIL 
PROTECTED]/disks/2/mandrake/devel/cooker/i586/media/main/cdrdao-1.2.0-2mdk.i586.rpm
                //
                
                psi.UseShellExecute = false;
                
                Process process = Process.Start(psi);
                
                Console.WriteLine("Process Name: " + process.ProcessName);
                Console.WriteLine("Process Id: " + process.Id);
                Console.WriteLine("Process RedirectInput: " + 
process.StartInfo.RedirectStandardInput);
                Console.WriteLine("Process RedirectOutput: " + 
process.StartInfo.RedirectStandardOutput);
                Console.WriteLine("Process RedirectError: " + 
process.StartInfo.RedirectStandardError);
                
                Console.WriteLine("Processing");                        
                bool retn = false;
                while (!retn)
                {                       
                        StreamReader sr = null;
                        sr = process.StandardError;

                        string content = sr.ReadLine();
                        Console.WriteLine("Stuff my GUI application will use: " 
+ content);
                        
                        retn = process.WaitForExit(1000);
                }
                
                Console.WriteLine("Process has exited: " + retn.ToString());
                process.Close();
        }
}

_______________________________________________
Mono-list maillist  -  Mono-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to