Linux/OSX/Windows - 等待进程结束
Linux/OSX/Windows - Waiting end of process
在OSX下,有"open -W"允许等待可执行文件结束。
windows 的等效指令是什么?
Linux 对于 sublime-text (subl) 这样的程序确实有这种非阻塞行为。它是如何做到的 (execv ?)
基本上,我正在尝试在 C 程序中启动可执行文件并等待它结束。
在Linux下,父进程可以使用 wait 或 waitpid 系统调用等待子进程终止。为了更精细的进程同步,使用信号量。
通过编辑,在 linux 下,您正在查看:
childpid = fork();
if (childpid) {
execve("program", argvp, envp);
} else {
int status;
pid_t pid = wait(&status);
}
在windows下,需要使用CreateProcess
to create the process, and then use 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);
}
在OSX下,有"open -W"允许等待可执行文件结束。
windows 的等效指令是什么?
Linux 对于 sublime-text (subl) 这样的程序确实有这种非阻塞行为。它是如何做到的 (execv ?)
基本上,我正在尝试在 C 程序中启动可执行文件并等待它结束。
在Linux下,父进程可以使用 wait 或 waitpid 系统调用等待子进程终止。为了更精细的进程同步,使用信号量。
通过编辑,在 linux 下,您正在查看:
childpid = fork();
if (childpid) {
execve("program", argvp, envp);
} else {
int status;
pid_t pid = wait(&status);
}
在windows下,需要使用CreateProcess
to create the process, and then use 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);
}