Hi All,

I am using System.Diagnostics namespace to spawn a console application. I want 
use asynchronous read and synchronous write, since the application is 
interactive. If I use synchronous read as mentioned below code, I need to close 
the stream writer before reading to end. Please help me to make code 
interactive.

Working Code:

import System
from System.Diagnostics import *
targetDir = "C:\\Users\\Administrator\\Desktop\\AMD64"
p = Process()
p.StartInfo.WorkingDirectory = targetDir
p.StartInfo.FileName = "C:\\Users\\Administrator\\Desktop\\AMD64\\WinFWUpg.exe"
#p.StartInfo.Arguments = "/c WinFWUpg.exe"
p.StartInfo.UseShellExecute = False
p.StartInfo.CreateNoWindow = False
p.StartInfo.RedirectStandardInput = True
p.StartInfo.RedirectStandardOutput = True
p.StartInfo.RedirectStandardError = True
p.Start()
sw = p.StandardInput
sr = p.StandardOutput
se = p.StandardError
print "success"
sw.WriteLine("dir\n")
sw.WriteLine("dev 1\n")
sw.Flush()
sw.Close()
print sr.ReadToEnd()


Not Working code:

import System
from System.Diagnostics import *
targetDir = "C:\\Users\\Administrator\\Desktop\\AMD64"
p = Process()
p.StartInfo.WorkingDirectory = targetDir
p.StartInfo.FileName = "C:\\Users\\Administrator\\Desktop\\AMD64\\WinFWUpg.exe"
#p.StartInfo.Arguments = "/c WinFWUpg.exe"
p.StartInfo.UseShellExecute = False
p.StartInfo.CreateNoWindow = False
p.StartInfo.RedirectStandardInput = True
p.StartInfo.RedirectStandardOutput = True
p.StartInfo.RedirectStandardError = True
p.Start()
sw = p.StandardInput
sr = p.StandardOutput
se = p.StandardError
print "success"
sw.WriteLine("dir\n")
while True:
    outline = sr.ReadLine()   /// Hangs here
    if not outline == None:
        print outline
    else:
        break
sw.WriteLine("dev 1\n")
sw.Flush()
sw.Close()
print sr.ReadToEnd()


Thanks and Regards,
Hemanth M B

_______________________________________________
Ironpython-users mailing list
Ironpython-users@python.org
https://mail.python.org/mailman/listinfo/ironpython-users

Reply via email to