В настоящее время я сталкиваюсь с проблемой при использовании BufferedReader, чтобы получить дескриптор Unix-канала. Вначале мое приложение Java создает канал, а внешний скрипт perl, выполняемый через это приложение Java, записывает в этот канал, и, наконец, поток приложения Java непрерывно считывает из этого Unix-канала.Блоки Java BufferedReader на трубе unix
Я использую следующий код для чтения unix-канала с Java. Однако я вижу, что четвертый оператор блокирует и никогда не возвращается. Я использую JDK 1.8 -
File f = new File("/tmp/abc_c");
System.out.println(f.exists) ;
if (f.exists())
BufferedReader reader = new BufferedReader(new FileReader("/tmp/abc_c"));
Также я вижу, что sysout печатает true. Я хотел знать, правильно ли использовать BufferedReader для чтения Unix-канала?
Когда он блокируется? Перед тем, как читать что-нибудь или позже? – fge
Перед чтением ничего. Просто при открытии. – user1619355
ОК, а также, почему вы открываете читателя напрямую? Напомним, что читатель попытается декодировать поток байтов в символы. Это одна из проблем, которые у вас есть (и вы также не указываете кодировку символов) – fge