史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   系統 & 硬體安裝及故障判斷技術文件 (http://forum.slime.com.tw/f134.html)
-   -   如何在CMD視窗下將一個程式模擬成以後台執行的方式啟動 (http://forum.slime.com.tw/thread179953.html)

psac 2006-07-12 09:42 PM

如何在CMD視窗下將一個程式模擬成以後台執行的方式啟動
 
如何在CMD視窗下將一個程式模擬成以後台執行的方式啟動

--------------------------------------------------------------------------------

在xNix下面,大家都知道在命令行後面加個"&"就可以以後台執行的方式啟動一個工作行程,那麼在windows的cmd視窗下,在不使用Windows NT Service的前提下,我們該如何做呢?
答案很簡單,使用start命令,我們在cmd視窗下輸入"start /?",就可以得到如下幫助訊息

Starts a separate window to run a specified program or command.

START ["title"] [/Dpath] [/i] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/b] [command/program]
[parameters]

"title" Title to display in window title bar.
path Starting directory
B Start application without creating a new window. The
application has ^C handling ignored. Unless the application
enables ^C processing, ^Break is the only way to interrupt
the application
I The new environment will be the original environment passed
to the cmd.exe and not the current environment.
MIN Start window minimized
MAX Start window maximized
SEPARATE Start 16-bit Windows program in separate memory space
SHARED Start 16-bit Windows program in shared memory space
LOW Start application in the IDLE priority class
NORMAL Start application in the NORMAL priority class
HIGH Start application in the HIGH priority class
REALTIME Start application in the REALTIME priority class
ABOVENORMAL Start application in the ABOVENORMAL priority class
BELOWNORMAL Start application in the BELOWNORMAL priority class
WAIT Start application and wait for it to terminate
command/program
If it is an internal cmd command or a batch file then
the command processor is run with the /K switch to cmd.exe.
This means that the window will remain after the command
has been run.

If it is not an internal cmd command or batch file then
it is a program and will run as either a windowed application
or a console application.

parameters These are the parameters passed to the command/program


If Command Extensions are enabled, external command invocation
through the command line or the START command changes as follows:

non-executable files may be invoked through their file association just
by typing the name of the file as a command. (e.g. WORD.DOC would
launch the application associated with the .DOC file extension).
See the ASSOC and FTYPE commands for how to create these
associations from within a command script.

When executing an application that is a 32-bit GUI application, CMD.EXE
does not wait for the application to terminate before returning to
the command prompt. This new behavior does NOT occur if executing
within a command script.

When executing a command line whose first token is the string "CMD "
without an extension or path qualifier, then "CMD" is replaced with
the value of the COMSPEC variable. This prevents picking up CMD.EXE
from the current directory.

When executing a command line whose first token does NOT contain an
extension, then CMD.EXE uses the value of the PATHEXT
environment variable to determine which extensions to look for
and in what order. The default value for the PATHEXT variable
is:

.COM;.EXE;.BAT;.CMD

Notice the syntax is the same as the PATH variable, with
semicolons separating the different elements.

When searching for an executable, if there is no match on any extension,
then looks to see if the name matches a directory name. If it does, the
START command launches the Explorer on that path. If done from the
command line, it is the equivalent to doing a CD /D to that path.


經過對上面的options的研究,我們可以發現,/B和/MIN這兩個options就是我們所需要的,因此我們可以這樣寫一條cmd命令
引用:
最初由 cmd 發表
start /DC:\Windows /I /MIN /NORMAL /B dir > c:\dir.txt


這條指令的執行結果看上去和一條普通的"dir > c:\dir.txt"沒有區別(cmd視窗還是那個視窗),然後我們試著去刪除C硬碟下面的dir.txt,結果windows向我們抱怨說有另外一個程式正在使用該文件,打開process explorer,我們可以發現同時有兩個名為cmd的工作行程在執行著(假設我們只打開了一個cmd視窗),kill掉其中那個隱藏的cmd視窗後,我們再試著去刪除那個dir.txt時就可以發現,此時該文件可以被安全刪除

由此,我們就模擬出來了一個類似於xNix下的守護工作行程性質的windows後台工作行程了。唯一的遺憾是,當我關閉原始的那個cmd視窗時,後台允許著的那個cmd工作行程也同時被幹掉了


所有時間均為台北時間。現在的時間是 11:50 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1