Trên hệ thống Linux của chúng tôi, chúng tôi sử dụng các đường ống được đặt tên để liên lạc giữa các quá trình (nhà sản xuất và người tiêu dùng).Làm cách nào để mở một đường dẫn có tên Windows từ Java?
Để kiểm tra mã người tiêu dùng (Java), tôi muốn thực hiện (trong Java) một nhà sản xuất giả viết một đường ống có tên được kết nối với người tiêu dùng.
Bây giờ, thử nghiệm cũng sẽ hoạt động trong môi trường phát triển Windows. Vì vậy, tôi muốn biết cách tạo một đường ống có tên trong Windows từ Java. Trong Linux, tôi có thể sử dụng mkfifo (được gọi là sử dụng Runtime.exec()
), nhưng làm cách nào để thực hiện điều này trên Windows?
Mã trên có hiệu quả với ai đó không? Tôi đã thử nó trên Windows 7 x64, Java 1.7.0_45 và kết quả là 'java.io.FileNotFoundException: \\. \ Pipe \ testpipe (Hệ thống không thể tìm thấy tệp được chỉ định) tại java.io.RandomAccessFile.open (Phương thức Gốc) tại java.io.RandomAccessFile. (RandomAccessFile.java:122) '. Nếu nó được tạo ra thuận tay như đã đề cập [trong bài đăng này] (http://answers.microsoft.com/en-us/windows/forum/windows8_1-files/windows-81-enterprise-64-bit-running-java-jdk/f67d1302-905e-4511-ba1b-0888b259258a)? –
Tôi nhận được câu trả lời cho câu hỏi của mình ở trên: trong Java, bạn không thể tạo một đường ống có tên (trừ khi người ta sử dụng [JNA] (https://github.com/java-native-access/jna/blob/master/contrib /platform/test/com/sun/jna/platform/win32/Kernel32NamedPipeTest.java)), chỉ để mở một câu trả lời hiện có (xem [câu trả lời này] (http://stackoverflow.com/a/2247022/267197) và [ bài đăng đó] (https://cdimascio.wordpress.com/2014/01/11/named-pipes-with-java/)). Rất cám ơn các câu trả lời dưới đây. –
@dma_k Tôi gặp lỗi tương tự. Dường như không thể tạo một đường ống có tên bằng Java nhưng mã hoạt động với một đường ống hiện có đã được tạo trong một quy trình khác (ví dụ: quy trình .Net trong ví dụ được liên kết). – Michael