Seb*_*Seb 27 unix bash file lsof file-descriptor
您可以使用命令lsof来获取所有正在运行的进程的文件描述符,但我想要做的是关闭其中一些描述符,而不是在该进程内部.这可以在Windows上完成,因此您可以轻松取消阻止某些应用程序.
那有什么命令或功能吗?
小智 77
我不知道你为什么要这样做,但你应该能够使用gdb附加到进程,然后在fd上调用close().例:
在一个壳:猫
在另一个shell中:
$pidof cat
7213
$gdb -p 7213
...
lots of output
...
(gdb)
Run Code Online (Sandbox Code Playgroud)
现在告诉gdb执行close(0):
(gdb) p close(0)
$1 = 0
(gdb) c
Continuing.
Program exited with code 01.
(gdb)
Run Code Online (Sandbox Code Playgroud)
在第一个shell中我得到了这个输出:
cat: -: Bad file descriptor
cat: closing standard input: Bad file descriptor
Run Code Online (Sandbox Code Playgroud)
在 Windows 中,您可以使用程序来完成此操作,因为有人编写了一个程序,将设备驱动程序插入正在运行的内核中来完成此操作。顺便说一句,这样做可能很危险,因为在关闭损坏的应用程序正在使用的句柄后,应用程序不知道该句柄已关闭,并且当应用程序打开其他一些不相关的对象时,它也不知道同一个句柄现在可能引用一些其他不相关的对象。您确实想尽快杀死损坏的应用程序。
在 Linux 中你当然可以使用同样的技术。编写一个程序,将模块插入正在运行的内核中。与模块通信并告诉它关闭哪个句柄。这样做同样危险。
| 归档时间: |
|
| 查看次数: |
34154 次 |
| 最近记录: |