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