|
|
1
2
在Windows中,您可以使用程序来完成这项工作,因为有人编写了一个程序,该程序将设备驱动程序插入正在运行的内核来完成这项工作。顺便说一句,这样做可能很危险,因为关闭一个中断的应用程序正在使用的句柄后,应用程序不知道该句柄已关闭,并且当应用程序打开其他一些不相关的对象时,它不知道同一个句柄现在可能引用其他不相关的对象。您真的想尽快终止中断的应用程序。 在Linux中,您当然可以使用相同的技术。编写一个程序,将一个模块插入正在运行的内核。与模块通信并告诉它要关闭的句柄。这样做同样危险。 |
|
|
2
76
我不知道您为什么要这样做,但是您应该能够使用gdb附加到进程,然后在fd上调用close()。例子: 在一个壳里:猫 在另一个外壳中:
现在,您告诉gdb执行close(0):
在第一个shell中,我得到这个输出:
|
|
|
3
3
我不这么认为,但是lsof为您提供了打开文件的进程的pid,所以您可以做的是完全终止该进程,或者至少发送一个信号让它退出。 |
|
|
4
2
在Unix上比在Windows上更不需要这样做。 在Windows上,大多数程序倾向于“锁定”(实际上拒绝共享)它们打开的文件,因此它们不能被其他程序读/写/删除。 在UNIX上,大多数情况下不会发生这种情况。UNIX上的文件锁定主要是建议性的,只会阻止其他锁定尝试,而不是正常的读/写/删除操作。甚至可以删除进程的当前目录。 在Unix中,只有在尝试卸载文件系统时才会出现这种情况(任何对已安装文件系统的引用都会阻止umount)。 |
|
|
5
1
我对此表示怀疑。文件描述符是本地进程,
也许更多的细节会有用,关于你试图解决的阻塞问题。 |