Tôi cần truy cập các bộ mô tả tệp được đánh số từ Java - ngoài 0, 1 hoặc 2.Sử dụng bộ mô tả tệp được đánh số từ Java
Làm cách nào để thực hiện điều này? Tôi nhìn vào lớp FileDescriptor
nhưng did'nt tìm thấy bất kỳ cách nào để khởi tạo nó với một số mô tả tập tin nhất định.
Ví dụ cụ thể cho phép giả sử Java được gọi là quá trình con từ một ngôn ngữ lập trình khác. Các bộ mô tả tệp 3 và 4 được cung cấp bởi ngôn ngữ khác cho đầu vào và đầu ra.
Những gì tôi cần trong Java là InputStream
và OutputStream
đối tượng kết nối với những tập tin mô tả, giống như System.in, System.out và System.error được kết nối với tập tin-desctiptors 0, 1 và 2.
Tôi đang sử dụng Java 1.6 và điều này sẽ chạy trên các hệ thống Unix giống nhau.
giải pháp làm việc Tested:
Câu trả lời với các bộ mô tả tập tin mục hệ thống tập tin đặc biệt đã chỉ cho tôi đến các giải pháp khả thi sau:
tìm hiểu xem và nơi hệ thống cũng như Unix của bạn có một hệ thống tập tin đặc biệt chứa các mục được đặt tên cho tất cả các bộ mô tả tập tin.
- Tôi đang sử dụng FreeBSD trong đó fdescfs(5) là hệ thống tệp chỉ thực hiện việc này. Dưới Linux nó sẽ là procfs.
đảm bảo hệ thống tập tin này được gắn
FreeBSD: đặt
fdescfs /dev/fd fdescfs rw 0 0
trong/etc/fstab
hoặc chạy
mount -t fdescfs null /dev/fd
trên một dấu nhắc shell (có lẽ với sudo)
Sử dụng mới
FileInputStream("/dev/fd/3")
vànew FileOutputStream("/dev/fd/4")
để có được những con suối kết nối với filedescriptors (những con đường dành cho FreeBSD, thay bằng đường dẫn hệ điều hành của bạn)
http://www.kfu.com/~nsayer/Java/jni-filedesc.html có thể giúp –