使用 exec 调用在 Java 中创建命名管道
Creating a named pipe in Java with exec calls
我正在尝试使用 exec 调用在 Java 中创建命名管道。我有这行代码
Process p = Runtime.getRuntime().exec("/bin/sh -c \"mkfifo ~/myFifo && tail -f ~/myFifo | csh -s\"");
但是当我在调用后查找 ~/myFifo
时,它不存在。有什么理由这行不通吗?
我也尝试过不使用 /bin/sh -c
位,但也没有用。
编辑
final String [] cmds = {"/bin/sh", "-c", "\"mkfifo ~/myFifo && tail -f ~/myFifo | csh -s\""};
Process p = Runtime.getRuntime().exec(cmds);
如果你写出第三个参数,你会得到:
"mkfifo ~/myFifo && tail -f ~/myFifo | csh -s"
如果您尝试 运行 shell,您会发现它不起作用:
$ "mkfifo ~/myFifo && tail -f ~/myFifo | csh -s"
bash: mkfifo ~/myFifo && tail -f ~/myFifo | csh -s: No such file or directory
只需删除您添加的文字引号:
final String [] cmds = {"/bin/sh", "-c", "mkfifo ~/myFifo && tail -f ~/myFifo | csh -s"};
并记得阅读 Process.getInputStream()
。
我正在尝试使用 exec 调用在 Java 中创建命名管道。我有这行代码
Process p = Runtime.getRuntime().exec("/bin/sh -c \"mkfifo ~/myFifo && tail -f ~/myFifo | csh -s\"");
但是当我在调用后查找 ~/myFifo
时,它不存在。有什么理由这行不通吗?
我也尝试过不使用 /bin/sh -c
位,但也没有用。
编辑
final String [] cmds = {"/bin/sh", "-c", "\"mkfifo ~/myFifo && tail -f ~/myFifo | csh -s\""};
Process p = Runtime.getRuntime().exec(cmds);
如果你写出第三个参数,你会得到:
"mkfifo ~/myFifo && tail -f ~/myFifo | csh -s"
如果您尝试 运行 shell,您会发现它不起作用:
$ "mkfifo ~/myFifo && tail -f ~/myFifo | csh -s"
bash: mkfifo ~/myFifo && tail -f ~/myFifo | csh -s: No such file or directory
只需删除您添加的文字引号:
final String [] cmds = {"/bin/sh", "-c", "mkfifo ~/myFifo && tail -f ~/myFifo | csh -s"};
并记得阅读 Process.getInputStream()
。