Я создаю именованный канал в Java, которая работает со следующим кодом:Невозможно удалить именованный канал из Java
final String [] mkfifo = {"/bin/sh", "-c", "mkfifo ~/myFifo && tail -f ~/myFifo | csh -s"};
Process p = Runtime.getRuntime().exec(mkfifo);
Но теперь я получаю NoSuchFileException
при попытке удалить его с этот код:
Path fifoPath = Paths.get("~/myFifo");
try {
Files.delete(fifoPath);
} catch (Exception e) {
System.err.println(e);
}
Я проверил, что файл, на самом деле, создается путем выдачи ls ~
во время выполнения программы, и ~/myFifo
все еще остается после того, как исключение и выполнение программы завершается.
Я предположил ... && tail ...
может вызвать некоторые проблемы в случае, если это как-то блокирующие, так что я сделал изменения создания именованного канала с этим:
final String [] mkfifo = {"/bin/sh", "-c", "mkfifo ~/myFifo"};
Process p = Runtime.getRuntime().exec(mkfifo);
Труба создается, и это хорошо. Я также попытался удалить трубу в менее родной Java способ, с помощью exec
:
final String [] rmfifo = { "/bin/rm ~/myFifo" };
Runtime.getRuntime().exec(rmfifo);
Ни один из них не похоже на работу. Есть идеи?
Спасибо, erip
Можете ли вы показать ошибку, которая бросается? – Strikeskids
'java.nio.file.NoSuchFileException: ~/myFifo' – erip