2016-01-19 80 views
0

在OSX下,存在「open -W」,允許等待可執行文件的結尾。Linux/OSX/Windows - 進程等待結束

什麼是Windows的等效指令?

Linux確實有像sublime-text(subl)這樣的程序的非阻塞行爲。它是如何做到的(execv?)

基本上,我試圖在C程序中啓動一個可執行文件並等到它結束。

+1

我不知道你在說什麼。父進程完全可以在Windows中等待其子進程。 –

+2

'open'會議啓動服務以獲取相關程序來打開文檔。這與運行命令不一樣。 linux使用'xdg-open'來完成類似的事情,並且在Windows命令shell中,你可以在文檔上使用類似'start/wait'的命令來獲得相同的行爲。然而,你的問題實際上沒有足夠的幫助組成任何有意義的答案。 – Petesh

回答

1

隨着編輯,在Linux下,你看:windows下

childpid = fork(); 
if (childpid) { 
    execve("program", argvp, envp); 
} else { 
    int status; 
    pid_t pid = wait(&status); 

}

,你需要使用CreateProcess創建過程,然後用WaitForSingleObject等待過程終止;例如

PROCESS_INFORMATION processInformation = {0}; 
STARTUPINFO startupInfo = {0}; 
startupInfo.cb = sizeof(startupInfo); 
bool status = CreateProcess(L"Program", L"args", 0, 0, 0, 
    NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW, 
    0, 0, &startupInfo, &processInformation); 
if (status) { 
    WaitForSingleObject(processInformation.hProcess, INFINITE); 
} 
1

在Linux下,父進程可以等待子進程通過使用wait或waitpid系統調用來終止。要獲得更好的進程同步,請使用信號量。