我想终止与我在同一目录中运行的所有程序。 我需要找到哪些程序正在运行并杀死它们(并小心不要杀死自己)。 我正在 Ubuntu(Linux) 中运行我的程序。
我需要使用这个命令:
int kill(pid_t pid, int sig);
我该怎么做?
*程序位于同一目录中。
最佳答案
严格来说,你的问题没有意义。当您获取进程的目录时,它可能已调用 chdir(2)在你杀死它之前(然后你不应该杀死它)。
在 Linux 上,要获取有关进程的信息,请使用 proc(5) 。所以使用readdir(3)之后opendir(3)上/proc/
(仅过滤数字目录,例如 /proc/1234/
对应 pid 1234 的进程)。对于每个进程,使用 readlink(2)上 /proc/1234/cwd
获取其目录(并在 /proc/1234/exe
上获取其可执行文件,如果重要的话)。使用getcwd(2)和 getpid(2)获取当前目录和当前进程。
顺便说一句,你的kill(2)是 syscall (在 syscalls(2) 中列出),而不是命令。命令是kill(1)通常从 shell 运行。
您应该阅读Advanced Linux Programming .
最后,您想要终止目录中运行的每个进程的行为对用户来说是极其不友好的。所以至少要记录下来,也许还可以提供一些方法来禁用这种行为。更温和的方法是创建一些临时目录(使用 mkdtemp(3) )然后 chdir(2)进入它(然后可能是 unlink(2) 或 rmdir(2) 它)。
另请参阅pkill(1)和pgrep
关于linux - linux下如何杀死同一目录下的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26536167/