Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法从Java中删除命名管道_Java_Named Pipes_Nosuchfileexception - Fatal编程技术网

无法从Java中删除命名管道

无法从Java中删除命名管道,java,named-pipes,nosuchfileexception,Java,Named Pipes,Nosuchfileexception,我正在用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("

我正在用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问题在于
~/myFifo

Java不理解
~

我运行了以下代码

Path fifoPath = Paths.get("/home/russell/myFifo");
try {
    Files.delete(fifoPath);
} catch (Exception ex) {
    System.err.println(ex);
}
它运行得非常完美

String home = System.getProperty("user.home");
Path fifoPath = Paths.get(home + "/myFifo");
try {
    Files.delete(fifoPath);
} catch (Exception ex) {
    System.err.println(ex);
}
上面的代码也适用于我的系统

~/
是一个
shell
东西,所以java不会接受它


它实际创建文件的原因首先是因为您正在使用
/bin/sh
运行
mkfifo
命令,并且
sh
转换
~/

您能显示抛出的错误吗?
java.nio.file.NoSuchFileException:~/myFifo
这有效。遇到了其他一些问题,但这是无关的。非常感谢你!