linux - linux下如何杀死同一目录下的程序?

标签 linux ubuntu kill

我想终止与我在同一目录中运行的所有程序。 我需要找到哪些程序正在运行并杀死它们(并小心不要杀死自己)。 我正在 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/

相关文章:

c++ - 你怎么知道客户端何时连接到服务器?

ubuntu - linux Vagrant ubuntu/xenial 不同机器的不同登录用户

linux - Bash 在 Linux 中的 vpnc 连接后在 resolv.conf 的搜索字段中附加域

php - 适用于 Raspberry Pi 的最佳轻型服务器(Linux + Web 服务器 + 数据库)

java - 在 ubuntu 中使用特定 JRE 运行 .jar

python - 在 Windows 上从 Python 脚本中终止由批处理文件启动的外部进程

emacs - 如何杀死矩形,但就像 Emacs 中的普通杀死一样?

linux - bash 如何终止父进程,或从 bash 模块脚本中的函数退出父进程

c - 如何修复 "ignoring return value"错误?

c++ - 如何在 C/C++ linux 中实现类似 invokeOnMainThread() 的函数?