首先声明,我不是C
背景的开发者,而是一名PHP开发者。因此,我的所有编码都是通过借鉴其他示例并对其进行微调来满足我的需求。如果我提出了太基础或明显的问题,请多多包涵。
我正在使用CreateProcess()
启动FFmpeg
。
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: Dev C++
CreateProcess()
的最后一个参数传递的PROCESS_INFORMATION
结构体中,在您的情况下,这将是pi
变量,具体而言是:**pi.dwProcessId
**。 - WhozCraig