如何在 Windows 和 Linux 中终止进程?
有没有简单的方法可以使用进程 ID(Linux 中的 pid_t
和 Windows 中的 PROCESS_INFORMATION::dwProcessId
)来终止进程?
Is there easy way to kill a process using its process ID (pid_t
in Linux and PROCESS_INFORMATION::dwProcessId
in Windows)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
linux:
kill(pid, SIGKILL);
Windows:
TerminateProcess(Handle, 1)
从OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessId); 获取 Handle;
code>请注意,这两者都会简单地终止进程,目标没有机会正确关闭。如果您想让目标有机会执行此操作,请在 Linux 上使用 SIGHUP,然后使用 SIGTERM。对于 Windows,如果您有目标应用程序主窗口句柄,则可以发送 WM_SYSCOMMAND/SC_CLOSE,这可以通过 EnumWindows 和 GetWindowThreadProcessId 找到
linux:
kill(pid, SIGKILL);
Windows:
TerminateProcess(Handle, 1)
where you get Handle fromOpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessId);
Note that both of these will simply kill the process, the target is given no chance to shut down properly. If you want to let the target get a chance to do this, use SIGHUP and then SIGTERM on linux. For windows, you could send WM_SYSCOMMAND/SC_CLOSE if you have the target applications main window handle, this can be found with EnumWindows and GetWindowThreadProcessId