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

标签 linux windows macos pid child-process

在 OSX 下,有“open -W”允许等待可执行文件结束。

Windows 的等效指令是什么?

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

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

最佳答案

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

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

在windows下,需要使用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/OSX/Windows - 等待进程结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34875228/

相关文章:

.net - 所有者绘制 TextBox 以在 WinForms 中使用

python - 即使在编辑 PATH、在 distutils 中创建文件、删除所有 -mno-cygwin 实例后,也无法让 Cython 找到 MinGW gcc 编译器

macos - 使用 MAMP Pro php.ini 而不是 OSX php

macos - NSMenu 初始值设定项或 didLoad 等效项?

c++ - 想用cmake制作独立程序

linux - 无法从 gcloud 克隆到 git : "Could not find gcloud' s git credential helper.“

linux - 在不使用子 shell 的情况下调用带参数的函数 - bash

linux - 无法在 debian 8 中使用服务命令 (Jessie)

windows - 使用Media Foundation从文件播放音频到扬声器

linux - 如何熟练使用终端?