如何使用 C++ 以编程方式杀死进程?

Posted

技术标签:

【中文标题】如何使用 C++ 以编程方式杀死进程?【英文标题】:How to kill a process programatically using c++? 【发布时间】:2014-03-26 01:55:09 【问题描述】:

伙计们,我正在尝试通过 C++ 程序杀死进程,它正在杀死进程,但在杀死进程后没有得到所需的输出,我想要的输出是在杀死进程后显示剩余的正在运行的进程 if块,而不是显示 else 块。我改变了 if block & else block 仍然没有得到想要的输出。 代码如下:

#include<iostream>
#include<cstdlib>
#include<csignal>
using namespace std;
int main()
   
    int pid,f=0;
    system("ps -all");
    cout<<"Enter the Process ID to kill\n";
    cin>>pid;
    if((kill(pid,SIGKILL)))
        f=1;
    
    if(f)
    
        cout<<"List of processes after killing the process with PID"<<pid<<"are"<<"\n";
        system("ps -l");
    
    else    
       
        cout<<"Cant kill the process\n";
       
    return 0;

【问题讨论】:

我正在开发 ubuntu 13.04 阅读您正在使用的函数的documentation 总是一个好主意。 【参考方案1】:

您需要切换 if/else 情况:kill() 成功时返回 0,失败时返回 -1。只有当它失败时你才设置f=1

此外,当它失败时,它会将errno 设置为提供失败原因的错误代码。您可以使用 perror()strerror() 之类的函数来获取基于该错误代码的描述性错误消息。

【讨论】:

我交换了 if/else 案例但没有得到。 您的意思是即使您将该代码移至if 块后,它仍在打印“无法终止进程”消息? @Venki,你做错了什么。这是正确的答案。你甚至不需要变量 F。 那我不能再帮你了,因为你的代码对我来说是正确的(交换了 if/else 块)。

以上是关于如何使用 C++ 以编程方式杀死进程?的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中以编程方式杀死进程树

C++笔记--Linux编程(13)-守护进程-线程

轻轻杀死一个进程

如何有效地杀死C ++(Win32)中的进程?

如何安全地杀死 robocopy 进程

如何找到 MySQL 进程列表并杀死这些进程?