"Phil Tomson" <ptkwt / user2.teleport.com> wrote in message news:94vgfr$pq$1 / user2.teleport.com... > > I'm simply trying to run an app in a Dos window under Windows(98|NT|2K) - > it has to run on at least all of those Windoze types - > like: > > system("cmd.exe /c #{ENV[CYPRESS_DIR]}/bin/warp.exe") > > On NT this seems to work OK. > > I changed it to use command.com for Win9x: > system("command.com /c #{ENV[CYPRESS_DIR]}/bin/warp.exe") > -or even: > system("command.com /c c:/warp/bin/warp.exe") > ... > Anyway, I thought I had all of this figured out until i started trying it > on Win98. I discovered that there is a start command that will run the > executable, but it runs it in a seperate window and I've found that if > there is an error in the executable being run (like having a compiler > compile a nonexistent file) that the other window just hangs there and > never returns. Has anyone figured out how to get all of this to work > consistently? I really like Ruby and I would like to use it for this > project, but when it comes to the system and ``'s, well, they just work on > Perl on all the WinXX platforms I've tried without any playing around... > Can we get that kind of behaviour on Ruby eventually? > Hi, To remove system command or backticks problems on Windows, you must build ruby biniary with MS Visual C++ compiler. or define your own method like this require 'Win32API' def system(command) Win32API.new("crtdll", "system", ['P'], 'L').Call(command) end def `(command) popen = Win32API.new("crtdll", "_popen", ['P','P'], 'L') pclose = Win32API.new("crtdll", "_pclose", ['L'], 'L') fread = Win32API.new("crtdll", "fread", ['P','L','L','L'], 'L') feof = Win32API.new("crtdll", "feof", ['L'], 'L') saved_stdout = $stdout.clone psBuffer = " " * 128 rBuffer = "" f = popen.Call(command,"r") while feof.Call( f )==0 l = fread.Call( psBuffer,1,128,f ) rBuffer += psBuffer[0..l] end pclose.Call f $stdout.reopen(saved_stdout) rBuffer end No need of "cmd.exe /c" or "command.com /c". > Phil Hee-Sob Park