Calling external programs from D

Tydr Schnubbis fake at address.dude
Wed Apr 5 10:22:25 PDT 2006


Tydr Schnubbis wrote:
> Regan Heath wrote:
>> On Wed, 05 Apr 2006 00:36:45 -0700, kris <foo at bar.com> wrote:
>>> Tydr Schnubbis wrote:
>>>> I'm making a gui app with DWT, and I need a way to run an external,  
>>>> command line tool and get its output.  Either directly from the tool's  
>>>> stdout, or by having it write to a file first.
>>>>  I'm working on windows.  The system() function is unusable because it  
>>>> opens a new command line window when it starts the tool.  That you can  
>>>> get it to close the window again really fast by using 'start' is not  
>>>> good enough
>>>>  It doesn't have to be a portable way.  If someone can tell me how to  
>>>> call _popen or something in msvcrt.dll, I would be happy.
>>>
>>> I understand Regan posted a module to do exactly what you want. Maybe  
>>> he'll see this, or you may be able to dig it up again from the archives  
>>> (or via google upon the digitalmars site). Reckon the keywords would be  
>>>   something like ~ win32 pipe process regan
>> 
>> Here they/it is :)
>> Regan
> 
> Thanks!
> 
> But it doesn't work for me.  Seems that it blocks the new process from 
> acessing the network.  Any ideas what to do?

Here's a minimal test to show the problem:

import lib.process;
import std.stdio;

void main()
{
	Process proc;
	proc = new Process("ping google.com");
	writef(proc.readLine());
}

Compile: "dmd test.d lib/process.d lib/pipestream.d"

Output: "Ping request could not find host google.com. Please check the 
name and try again."

;)



More information about the Digitalmars-d-learn mailing list