How to know if 2 processes have access to common filesystem
你如何检测两个(在我的例子中是java)进程是否可以访问至少一个共同的文件系统? (可能包括网络共享文件系统)。
假设它们可能在共享磁盘的两台机器上,在不同的机器上,或者只是在同一台机器上的两个进程。我希望我的进程具有普通用户权限,所以假设我无法在所有文件系统的根目录中写入文件来跟踪这一点。
也许以某种方式使用临时目录。
- 他们需要告诉对方他们可以访问文件系统吗?
-
他们需要唯一地识别文件系统,以便他们知道他们是否可以通过文件系统传递文件,或者他们必须通过网络发送文件。
-
这些进程是否已经可以以某种方式相互交谈?
-
是的,它们进行通信(在我的情况下是通过 JMS 消息传递)
不要。如果他们在不同的机器上通过文件系统传递数据将比简单的套接字连接慢很多。如果它们在同一系统上,则套接字连接将不涉及网络物理层,并且可能比使用磁盘更快。
使用磁盘并且必须管理两个传输只是无缘无故地引入了复杂性。
- 如果数据在同一个文件系统上,我不会复制它,因为只需要读取访问权限,我希望 process1 说"嘿,文件在 /tmp/foo.bar"和 process2 "好的,如果我们共享同一个磁盘,我将从磁盘读取它"。 (假设文件大 100 Gb 左右)