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

时间:2014-03-26 01:55:10

标签: c++ linux signals posix

伙计们我试图通过C ++程序杀死进程,它正在杀死进程,但是在杀死进程后没有获得所需的输出,我想要的输出是在杀死进程后显示剩余的正在运行的进程阻止,而不是显示else块。如果阻止&否则阻止仍然无法获得所需的输出。 这是代码:

#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;
}

1 个答案:

答案 0 :(得分:2)

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

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