Page 1 of 1

process on windows

Posted: Thu Jan 10, 2008 7:52 pm
by newdep
on Xp ->

This (process "c:/windows/system32/cmd.exe ") does create a directory called .exe in the current directory?? why is that? ;-)


Norman.

Posted: Thu Jan 10, 2008 9:31 pm
by Lutz
I have no idea what Windows is doing here, but could verify, that the spawnvp() system call is called with the correct parameters. I suppose that ".exe' is some kind of file semaphore.

This does not impact normal usage of 'process', e.g. doing a (process "c:/WINDOWS/system32/notepad.exe")

Lutz

Posted: Fri Jan 11, 2008 3:12 am
by m35

Code: Select all

#!newlisp
(setq _P_WAIT 0)
(setq _P_NOWAIT 1)
(setq _P_OVERLAY 2)

(import "crtdll.dll" "_spawnvp")

;(setq cmd "cmd.exe") ; starts cmd.exe
;(setq cmd "c:/WINDOWS/system32/notepad.exe") ; starts notepad
;(setq cmd "c:\\windows\\system32\\cmd.exe") ; starts cmd.exe
(setq cmd "c:/windows/system32/cmd.exe") ; makes .exe folder

(setq nullarg 0)
(setq pnullarg (address nullarg))

(println (_spawnvp _P_NOWAIT cmd pnullarg))
How very odd...

Edit:

Code: Select all

C:\>c:/windows/system32/cmd.exe

C:\>c:/windows/system32/cmd.exe
A subdirectory or file .exe already exists.
Well at least it's consistent.

Posted: Fri Jan 11, 2008 3:52 pm
by newdep
Actualy... why does (process "newlisp") not popup ?
Its started but i dont see it anywhere..


Even stranger:

This works ->
(process "c:\windows\system32\notepad.exe")

But this doesnt ->
(process "c:\program files\newlisp\newlisp.exe")


does the <space> has something to do with this?

Posted: Fri Jan 11, 2008 6:03 pm
by Lutz
newlisp.exe is a shell application, which doesn't have its own window like notepad.exe. The shell works with std in/out/error of the application running in it.

Lutz

Posted: Fri Jan 11, 2008 6:19 pm
by m35
Like Lutz said, it seems that if you start a command-line program from a command-line program, it uses the same console window.

e.g. cmd starting cmd

Code: Select all

C:\>cmd.exe
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\>
e.g. newlisp starting newlisp

Code: Select all

> (process "newlisp.exe")
1956
> newLISP v.9.2.0 on Win32, execute 'newlisp -h' for more info.

>
This behavior is consistent with my Ubuntu terminal.

Code: Select all

> (process "newlisp")
5320
> newLISP v.9.1.0 on Linux, execute 'newlisp -h' for more info.

>
At least on windows, if you want to open a command-line program in its own console window, try this.

Code: Select all

(process "cmd.exe /c start cmd.exe")