在OSX下,存在「open -W」,允許等待可執行文件的結尾。Linux/OSX/Windows - 進程等待結束
什麼是Windows的等效指令?
Linux確實有像sublime-text(subl)這樣的程序的非阻塞行爲。它是如何做到的(execv?)
基本上,我試圖在C程序中啓動一個可執行文件並等到它結束。
在OSX下,存在「open -W」,允許等待可執行文件的結尾。Linux/OSX/Windows - 進程等待結束
什麼是Windows的等效指令?
Linux確實有像sublime-text(subl)這樣的程序的非阻塞行爲。它是如何做到的(execv?)
基本上,我試圖在C程序中啓動一個可執行文件並等到它結束。
隨着編輯,在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);
}
在Linux下,父進程可以等待子進程通過使用wait或waitpid系統調用來終止。要獲得更好的進程同步,請使用信號量。
我不知道你在說什麼。父進程完全可以在Windows中等待其子進程。 –
'open'會議啓動服務以獲取相關程序來打開文檔。這與運行命令不一樣。 linux使用'xdg-open'來完成類似的事情,並且在Windows命令shell中,你可以在文檔上使用類似'start/wait'的命令來獲得相同的行爲。然而,你的問題實際上沒有足夠的幫助組成任何有意義的答案。 – Petesh