Calling external programs from D

Regan Heath regan at netwin.co.nz
Tue Apr 18 20:42:34 PDT 2006


On Wed, 19 Apr 2006 03:57:44 +0200, Tydr Schnubbis <fake at address.dude>  
wrote:
> Tydr Schnubbis wrote:
>> Regan Heath wrote:
>>> On Thu, 6 Apr 2006 14:46:09 +0000 (UTC), Stuart Delaney   
>>> <Stuart_member at pathlink.com> wrote:
>>>> There's a bug in the makeBlock functions in process.d. The first   
>>>> parameter to
>>>> calloc should be 1 not 0. With that change (and the private readLine   
>>>> one) it
>>>> works fine for me.  Don't have an answer to the OP's DNS problem  
>>>> though.
>>>  You're dead right. With those changes it works for me too.
>>  I've fixed the calloc calls too, but it doesn't help.  If I try to  
>> ping google's IP, which is 64.233.167.99 according to ping, I get  
>> "Pinging Error: 4invalid UTF-8 sequence".  Maybe my windows  
>> installation is screwed, it's getting really old...
>>  Btw, I use dmd 0.148, haven't tried this with any other version yet.
> Could it be that CreateProcessA is used wrong somehow?  I don't know the  
> win32 api, but does anyone know if using it wrong (security settings or  
> sth) could block new process from accessing the network?  Where would I  
> start looking if I want to fix this?  The msdn docs didn't help much.  
> Couldn't even find mention of this function, only CreateProcess, without  
> the trailing 'A'.  But it seems to be the same function.
>
> Here's what the call looks like:
> CreateProcessA(null,std.string.toStringz(command),null,null,true,DETACHED_PROCESS,env,null,&startup,info)

CreateProcessA is the ascii version.
CreateProcessW is the unicode (UTF-16) version.

std.string.toStringz converts the UTF-8 char[] into ascii
std.string.toUTF16 can be used to convert the UTF-8 char[] into UTF-16 if  
you want to call CreateProcessW instead.

The common cause of the "4invalid UTF-8 sequence" error is trying to  
output non-ascii characters to the windows console. Can you post your  
current code here.

Regan



More information about the Digitalmars-d-learn mailing list