【发布时间】:2015-07-15 12:53:23
【问题描述】:
我正在用 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);
管道仍然被创建,这很好。我还尝试通过 exec 以非原生 Java 方式删除管道:
final String [] rmfifo = { "/bin/rm ~/myFifo" };
Runtime.getRuntime().exec(rmfifo);
这些似乎都不起作用。有什么想法吗?
谢谢, erip
【问题讨论】:
-
你能显示正在抛出的错误吗?
-
java.nio.file.NoSuchFileException: ~/myFifo
标签: java named-pipes nosuchfileexception