4

我尝试了一个简单的程序来在运行时执行 Linux 命令。但是下面的程序被编译并运行没有任何错误,但是文本文件没有按预期创建。这个程序有什么问题吗?

import java.io.*;
class ExecuteJava
{
    public static void main(String args[])
    {
            String historycmd = "cat ~/.bash_history >> Documents/history.txt";
            try
            {
                    Runtime runtime = Runtime.getRuntime();
                    Process proc = runtime.exec(historycmd);
            }
            catch(Exception e)
            {
                    System.out.println(e);
            }
    }
}
4

2 回答 2

2

尝试访问Process提供的一些功能。我将从exitValue开始。通常,a-1表示出现问题,而 a0表示没有发生特别糟糕的事情。

还可以尝试InputStreamError Stream,并完整阅读它们。看看是否有对您有用的反馈。

除此之外,试试andy256 在评论中的建议。确保该Documents目录存在于程序的执行目录中。

于 2013-08-19T23:10:10.707 回答
1

附加运算符>>旨在被解释为命令外壳的一部分。利用

String[] historycmd = 
           { "bash", "-c", "cat ~/.bash_history >> Documents/history.txt"};
于 2013-08-19T23:21:07.883 回答