当我执行这行代码时:
Runtime.getRuntime().exec(new String[] {"mkdir", "-p", "/home/stuff/Keyring", "&& touch", "/home/stuff/Keyring/keyring.gpg"});
Keyring 文件夹中的 messaging.gpg 被创建为目录而不是文件,我不明白为什么。有什么想法吗?
最佳答案
您正在使用以下参数执行 mkdir
:
"-p", "/home/stuff/Keyring", "&& touch", "/home/stuff/Keyring/keyring.gpg"
(exec()
的第一个参数是要执行的进程)因此 -p 告诉 mkdir
在需要时构建父目录,其余参数 是要创建的目录。因此你的问题/问题(我怀疑你会有一个名为'&& touch
'的目录)
看起来你想执行一个shell脚本,所以你需要封装上面的内容,例如提供参数,例如:
/bin/sh -c "mkdir -p /home/stuff/Keyring && touch /home/stuff/Keyring/keyring.gpg"
即您正在执行 /bin/sh
,并在 shell 命令行上提供命令。
或者更好的是,使用 java.io.File
API 或类似 API,并完全避免 fork 进程?
关于java - 运行时.getRuntime().exec() : executing touch creates a directory when executing after mkdir,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49669940/