如何结束c++中的进程?

发布于 2024-11-16 16:01:14 字数 84 浏览 2 评论 0原文

好的,所以我想编写一个 C++ 程序,可以结束当前正在运行的特定进程。我在互联网上搜索过,但遇到的解决方案对我来说都没有意义。有没有简单的方法来结束进程?

Okay, so I want to write a c++ program that can end a specific process currently running. I have searched the internet and none of the solutions i have come across make sense to me. is there a simple way to end a process?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

画尸师 2024-11-23 16:01:14

在 POSIX 上,您调用 kill(3) 发送 SIGTERM 到进程。在 Windows 上,您可以调用 TerminateProcess()< /代码>

On POSIX you call kill(3) to send SIGTERM to the process. On Windows you call TerminateProcess().

格子衫的從容 2024-11-23 16:01:14

假设您在 *nix 平台上并且您有进程 ID(即您自己生成进程,使用其他方法来推断其 pid),使用 kill(2) 应该有效:

#include <sys/types.h>
#include <signal.h>

void main() {
    /* ... */
    pid_t pid = ???;
    kill(pid, SIGTERM);
}

不过,它仅在某些条件下有效:

对于有权发送信号的进程,它必须具有特权(在 Linux 下:具有 CAP_KILL 功能),或者发送进程的真实或有效用户 ID 必须等于真实或保存的设置用户 ID的目标进程。对于 SIGCONT,当发送和接收进程属于同一会话时就足够了。

Assuming that you're on a *nix platform and that you have the process ID (i.e. you spawned the process yourself used some other method to infer its pid), using kill(2) should work:

#include <sys/types.h>
#include <signal.h>

void main() {
    /* ... */
    pid_t pid = ???;
    kill(pid, SIGTERM);
}

It will only work under certain conditions, though:

For a process to have permission to send a signal it must either be privileged (under Linux: have the CAP_KILL capability), or the real or effective user ID of the sending process must equal the real or saved set-user-ID of the target process. In the case of SIGCONT it suffices when the sending and receiving processes belong to the same session.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文