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

时间:2014-10-23 19:45:41

标签: linux ubuntu kill

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

我需要使用这个命令:

int kill(pid_t pid, int sig);

我怎么做?

*这些程序位于同一目录中。

1 个答案:

答案 0 :(得分:2)

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

在Linux上,要获取有关进程的信息,请使用proc(5)。因此,在/proc/ /proc/1234/之后使用readdir(3)(仅过滤数字目录,如/proc/1234/cwd,对应于pid 1234的过程)。对于每个进程,使用/proc/1234/exe上的opendir(3)来获取其目录(如果有问题,则使用pgrep获取其可执行文件)。使用readlink(2)getcwd(2)获取当前目录和当前进程。

顺便说一句,您的getpid(2)kill(2)(在syscall中列出),而不是命令。命令syscalls(2)通常从shell运行。

您应该阅读kill(1)

最后,您希望杀死目录中运行的每个进程的行为对用户来说非常不友好。所以至少要记录它,并且可能会给某种方法来禁用这种行为。更温和的方法是将一些临时目录(使用Advanced Linux Programming)然后mkdtemp(3)加入其中(然后可能是chdir(2)unlink(2)

另请参阅rmdir(2)和{{1}}