【问题标题】:start on certain PID c++从某些 PID c++ 开始
【发布时间】:2018-05-04 21:23:44
【问题描述】:

我正在尝试在某个 PID 上启动批处理文件,或者获取程序启动的 PID。我真的不知道该怎么做。

    system("start C:\\testing\\vw.bat");
    Sleep(2000); //1000 = 1s

执行此代码后,我需要关闭“vw.bat”,但不关闭其他正在运行的批处理文件。

【问题讨论】:

  • 你有vw.bat不能修改的限制吗?因为如果你可以改变那个脚本来启动它的依赖脚本然后杀死它自己,这可能是一个更简单的任务。
  • msdn.microsoft.com/en-us/library/ms682623.aspx 可能会让你朝着富有成果的方向前进。

标签: c++ pid


【解决方案1】:
PROCESS_INFORMATION pi;
STARTUPINFO si{};
si.cb = sizeof(si);

BOOL success = CreateProcess("start C:\\testing\\vw.bat", NULL, NULL, NULL, TRUE, 0, NULL, "C:\\testing\\", &si, &pi);
if (success)
{
    int pid = pi.dwProcessId;
}

【讨论】:

  • 虽然这段代码可以回答问题,但最好解释一下如何解决问题并提供代码供参考。纯代码答案的实用性很低,而且常常令人困惑。
  • 当然。但这是一个低质量的问题,甚至没有尝试用谷歌搜索答案。也许我应该在评论中留下这个提示。
【解决方案2】:

您可以使用与系统相关的系统调用来获取进程的 PID。例如,在 linux 上,使用 pidof。现在,请注意使用system()函数是not recommended,还有其他你想做的方式,比如spawning a child process,可以让你轻松杀死进程。

【讨论】:

    猜你喜欢
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    相关资源
    最近更新 更多