首页 > 解决方案 > 根据 PID 杀死一个进程

问题描述

我以前从未用 C 编程过,但我需要一个 C 程序,它可以在给定 PID 的情况下杀死一个进程。我知道这个问题被问了很多,但是我遇到了一个我不明白的编译错误。这是用我在 Internet 上可以找到的东西构建的代码:

#include<stdio.h>
#include<signal.h>

int main (int argc, char *argv[]){

    if (argc != 2 ) return 1;

    int pid = atoi (argv[1]);
    kill (pid, SIGINT);

    return 0;
}

和日志:

-------------- Build: Debug in processKiller (compiler: GNU GCC Compiler)---------------

mingw32-gcc.exe -Wall -g  -c "D:\.Ce PC\Desktop\ws processKiller\processKiller\main.c" -o obj\Debug\main.o
D:\.Ce PC\Desktop\ws processKiller\processKiller\main.c: In function 'main':
D:\.Ce PC\Desktop\ws processKiller\processKiller\main.c:8:5: warning: implicit declaration of function 'atoi' [-Wimplicit-function-declaration]
     int pid = atoi (argv[1]);
     ^
D:\.Ce PC\Desktop\ws processKiller\processKiller\main.c:9:5: warning: implicit declaration of function 'kill' [-Wimplicit-function-declaration]
     kill (pid, SIGINT);
     ^
mingw32-g++.exe  -o bin\Debug\processKiller.exe obj\Debug\main.o   
obj\Debug\main.o: In function `main':
D:/.Ce PC/Desktop/ws processKiller/processKiller/main.c:9: undefined reference to `kill'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
2 error(s), 2 warning(s) (0 minute(s), 0 second(s))

谢谢。

标签: cpidkill

解决方案


kill是一个 POSIX 函数。由于您使用的是 Windows,因此您需要了解如何使用 WINAPI 终止进程。这有点复杂,但这应该让你开始:如何有效地杀死 C++ (Win32) 中的进程?


推荐阅读