我正在尝试使用Java中的Process或ProcessBuilder对象来模拟下面的bash shell脚本的功能。我不是100%清楚我如何进行标准输入的重定向。我怎么能做到这一点?
#
# Redirect shell echo command from standard output to file
# This will construct the input file
#
exec 1> $STDIN
echo -e "$NFILE\n$GFILE\n$INPUT\n$OUTPUT\n$CAX"
exec 1>&-
#
# Run executable redirecting standard in as the input file and output to a log file
#
"$EXE" < $STDIN >& $LOG
答案 0 :(得分:2)
Process对象流被误导地命名。您需要写入Process对象的OutputStream。
来自doc:
所有标准的io(即stdin, stdout,stderr)运营将是 重定向到父进程 通过三个流 (Process.getOutputStream(), Process.getInputStream() Process.getErrorStream())。
您还必须同时使用过程输出和标准错误 ,否则缓冲区将填满并且过程将被阻止。有关详细信息,请参阅here。