【问题标题】:How to kill a process programatically using c++?如何使用 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 总是一个好主意。

标签: c++ linux signals posix


【解决方案1】:

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

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

【讨论】:

  • 我交换了 if/else 案例但没有得到。
  • 您的意思是即使您将该代码移至if 块后,它仍在打印“无法终止进程”消息?
  • @Venki,你做错了什么。这是正确的答案。你甚至不需要变量 F。
  • 那我不能再帮你了,因为你的代码对我来说是正确的(交换了 if/else 块)。
猜你喜欢
  • 2013-03-19
  • 2011-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
相关资源
最近更新 更多