Linux / OSX / Windows - 等待进程结束

时间:2016-01-19 11:10:14

标签: linux windows macos pid child-process

在OSX下,有"打开-W"允许等待可执行文件的结束。

Windows的等效指令是什么?

Linux确实具有sublime-text(subl)等程序的非阻塞行为。它是如何做到的(execv?)

基本上,我在C程序中尝试启动可执行文件并等到它结束。

2 个答案:

答案 0 :(得分:1)

在Linux下,父进程可以使用wait或waitpid系统调用等待子进程终止。要获得更精细的进程同步,请使用信号量。

答案 1 :(得分:1)

通过编辑,在linux下,您正在查看:

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

}

在Windows下,您需要使用CreateProcess来创建进程,然后使用WaitForSingleObject等待进程终止; e.g。

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);
}
相关问题