I think the problem is not a problem of process and parent process but a problem of console window. look at the code below for test1.kix :
 Code:
@Scriptname ?
RUN "wkix32.exe "+@scriptdir+"\test2.kix"
@kix ?
"== sleep 5 seconds ==" ?
sleep 5
"== finished and exit =="
and for test2.kix
 Code:
$x=MESSAGEBOX("message 1","Test Message",64)
"hello world" ?
$x=MESSAGEBOX("message 2","Test Message",64)

if you run this code and validate the message box, a second console appears. Don't validate the second messagebox and wait 5 seconds, all runs fine. The first windows disappears.
Now, in test1.kix, replace
RUN "wkix32.exe "+@scriptdir+"\test2.kix"
by
RUN "cmd /c wkix32.exe "+@scriptdir+"\test2.kix"
this is not working any more. why ?
there is a process that is still handling the console window. All "graphical" elements are managed with handle (like for file) and a window is deleted only when the LAST process handling it stops !!!


an other example for understanding graphical handle is below (test3.kix)
 Code:
$=SetConsole( "HIDE" )
exit
start a console with cmd.exe. from this console, run "kix32 test3.kix".
in this case, the window disappears but if you look at task manager, you still see a cmd process running and you can't get it visible. In fact, the window still exists but kix32 as hidden it and when the process ends, cmd.exe continues to run in the hidden window.

there is not the problem with wkix32 because it is a win32 "graphical" process and it creates a own console the first time it needs it.
with win32 console processes (cmd.exe, kix32.exe), the first one creates a console and child processes share the same console. Then, this is not the "owner" that deletes the console but this is the last process using it. This mechanism is similar to garbage collector in java or .NET framework, an object is deleted only when there is not reference anymore to it.

To conclude, i think this is not a problem with kix32. I think this is by design in Windows.
_________________________
Christophe