【发布时间】:2013-02-07 18:02:56
【问题描述】:
首先让我声明我不是来自C 背景。我是一名 PHP 开发人员。因此,到目前为止,我编写的所有代码都是通过从其他示例中获取点点滴滴,并对它们进行微调以满足我的要求。因此,如果我提出的问题过于基本或明显,请多多包涵。
我从 FFmpeg 开始使用 CreateProcess() 到
int startFFmpeg()
{
snprintf(cmd, sizeof(cmd), "D:\\ffpmeg\bin\ffmpeg.exe -i D:\\video.mpg -r 10 D:\\frames");
PROCESS_INFORMATION pi;
STARTUPINFO si={sizeof(si)};
si.cb = sizeof(STARTUPINFO);
int ff = CreateProcess(NULL, cmd, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);
return ff;
}
我需要做的是获取该进程的PID,然后稍后检查它是否在一段时间后仍在运行。这基本上就是我要找的:
int main()
{
int ff = startFFmpeg();
if(ff)
{
// great! FFmpeg is generating frames
// then some time later
if(<check if ffmpeg is still running, probably by checking the PID in task manager>) // <-- Need this condition
{
// if running, continue
}
else
{
startFFmpeg();
}
}
return 0;
}
我做了一些研究,发现PID 在PROCESS_INFORMATION 中返回,但我找不到显示如何获取它的示例。
一些元数据
操作系统:Windows 7
语言:C
IDE:开发 C++
【问题讨论】:
-
进程 ID 在您作为最后一个参数传递给
CreateProcess()的PROCESS_INFORMATION结构中,在您的情况下是pi变量,具体来说:pi.dwProcessId -
真的吗?否决票?我认为 SO 的目的是学习和分享。并不是我刚来这里并发布了这个问题。我确实先做作业
-
@WhozCraig:在这种情况下确实是更可取的捷径......!
-
反对者可能想解释一下!?
-
@alk 谢谢。它已经在我的答案中停留了 10 分钟,这也是他真正想要做的事情的答案:看看一个进程是否已经终止。
标签: c windows winapi pid createprocess