我需要從Java訪問編號爲0,1或2以外的文件描述符。使用來自Java的編號文件描述符
這怎麼辦?我查看了FileDescriptor
類,但沒有找到任何方法用給定的文件描述符號來初始化它。
作爲一個具體的例子,讓我們假設Java被另一種編程語言稱爲子進程。文件描述符3和4由另一種語言提供,用於輸入和輸出。
我需要在Java中什麼是連接到這些文件的描述InputStream
和OutputStream
對象,就像System.in,System.out和System.error連接到文件desctiptors 0,1和2
我使用的是Java 1.6,它應該在Unix系統上運行。
測試工作液:
與文件描述符特殊的文件系統條目答案都指向我下面的可行的解決方案:
看看並在你的Unix相似系統具有包含所有文件描述符的命名條目的特殊文件系統。
- 我使用的是FreeBSD,其中fdescfs(5)是一個文件系統。在Linux下它將是procfs。
確保此文件系統被安裝
FreeBSD的:在
/etc/fstab
把
fdescfs /dev/fd fdescfs rw 0 0
或在shell提示符運行mount -t fdescfs null /dev/fd
(可能使用sudo)
使用新的
FileInputStream("/dev/fd/3")
和new FileOutputStream("/dev/fd/4")
獲取連接到filedescriptors流(路徑是爲FreeBSD,用你的操作系統路徑替換)
http://www.kfu.com/~nsayer/Java/jni-filedesc.html可能會幫助 – 2011-01-30 20:03:02