【问题标题】:How to kill programs in the same directory in linux?如何在linux中杀死同一目录中的程序?
【发布时间】:2014-10-23 19:45:41
【问题描述】:

我想杀死和我一样在同一目录中运行的所有程序。 我需要找到正在运行的程序并杀死它们(并小心不要杀死自己)。 我在 Ubuntu(Linux) 上运行我的程序。

我需要使用这个命令:

int kill(pid_t pid, int sig);

我该怎么做?

*程序位于同一目录中。

【问题讨论】:

  • 关于在“同一目录”中运行的程序,您的问题是模棱两可的。您是在谈论具有位于同一目录中的二进制文件的进程,还是在同一工作目录中启动的进程?
  • 看看lsof,祝你好运。
  • 顺便说一句,将其称为“命令”是不正确的;这是一个系统功能。有kill 命令,但不一样。
  • 你了解kill() 的参数吗? The first arg is the PID,您需要获取。
  • 谢谢!我知道 kill 系统调用及其参数

标签: linux ubuntu kill


【解决方案1】:

严格来说,你的问题没有意义。当你获得一个进程的目录时,它可能在你杀死它之前调用了chdir(2)(然后你不应该杀死它)。

在 Linux 上,要获取有关进程的信息,请使用 proc(5)。因此,在/proc/ 上的opendir(3) 之后使用readdir(3)(仅过滤数字目录,例如对应于pid 1234 进程的/proc/1234/)。对于那里的每个进程,在/proc/1234/cwd 上使用readlink(2) 获取其目录(如果重要,在/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

【讨论】:

  • 所有程序都在同一个文件夹中运行(我知道是哪一个),我需要“找到”进程的 pid 并杀死它们。
  • 但是你应该解释为什么你需要杀死他们。看起来很疯狂! BTW Linux 有目录,而不是文件夹....
  • 抱歉我的错误(我不太了解 Linux..)和它的 C 语言最后的幸存者竞赛。
  • 那么你能帮我找出进程的pid并杀死它们吗?
  • 我在回答中提供了所有必要的信息。阅读所有链接材料。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-17
  • 1970-01-01
  • 2020-08-07
  • 2015-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多