当前位置: 首页 > 面试题库 >

流程需要重定向输入

齐俊达
2023-03-14
问题内容

我有一个UNIX本机可执行文件,它要求像这样输入参数

prog.exe <foo.txt。

foo.txt有两行:bar baz

我正在使用java.lang.ProcessBuilder来执行此命令。不幸的是,prog.exe仅能使用文件重定向功能。有什么办法可以模仿Java中的这种行为?

当然,

ProcessBuilder pb = new ProcessBuilder("prog.exe", "bar", "baz");

不起作用。

谢谢!


问题答案:
ProcessBuilder pb = new ProcessBuilder("prog.exe");
Process p = pb.start();
OutputStream pos = p.getOutputStream();

InputStream fis = new FileInputStream("file.txt");
byte[] buffer = new byte[1024];
int read = 0;
while((read = fis.read(buffer)) != -1) {
    pos.write(buffer, 0, read);
}
fis.close();

未经测试,但类似的东西应该起作用。



 类似资料:
  • 问题内容: 第二回合 阅读了一些答案后,我的修改代码是: 它可以工作,但是似乎标准输出没有被重新连接或达到某种效果。这是执行: ’<’和’>’都可以,但是执行后就没有输出。 第1轮 我已经在C语言中使用相对简单的shell了一段时间,但是在实现输入(<)和输出(>)重定向时遇到了麻烦。帮我找到以下代码中的问题: 我可能那里有一些不必要的材料,因为我一直在尝试不同的方法来使其正常工作。我不确定出了什

  • 本文向大家介绍linux shell数据重定向(输入重定向与输出重定向)详细分析,包括了linux shell数据重定向(输入重定向与输出重定向)详细分析的使用技巧和注意事项,需要的朋友参考一下 在了解重定向之前,我们先来看看linux 的文件描述符。 linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操

  • 1. Shell 重定向 1.1 Shell 重定向是什么 我们在之前章节有学习 echo/printf 来将我们的需求输出,此时就是我们将系统的返回输出到我们标准终端,使得我们能够看到正常的输出的结果,Unix 命令默认的输入设备即 stdin 为键盘,标准和错误设备即 stdout 为显示器,我们利用重定向可以将输入改为文件,或者将输出重新定向到其他设备或文件中。 1.2 为什么要用重定向 我

  • 问题:我需要帮助修复js文件和更新代码的问题,这样程序就不会在每次返回初始页面时重置。 程序:该网站的功能如下:在localhost上运行程序将首先提示用户输入用户名。该用户名用作用户聊天/频道的ID。此外,用户能够创建和加入多行频道。如果两个主机同时运行并加入了同一个聊天,那么用户可以互相发送消息并立即更新。 这是存储库:https://github.com/NilesDobbs/Assignm

  • 问题内容: 我想将子进程的stderr输出重定向到stdout。常量应该这样做,不是吗? 然而, 确实 输出了一些东西。为什么会这样,如何在stdout上得到错误消息? 问题答案: 仔细阅读源代码即可得出答案。特别是,该文档在显示以下内容时会产生误导: 表示(…)的特殊值表示标准错误应与标准输出进入同一 句柄 。 由于在求值时stdout设置为“默认”(技术上来说),因此stderr也设置为“默认

  • 问题内容: 我正在尝试使用以下代码重定向在ProcessBuilder的帮助下启动的流程的输出 但是它以失败告终 线程“主”中的异常java.io.IOException:无法运行程序“ / myScript >> / myLogFile 2>&1 <&-&”:java.io.IOException:error = 2,java.lang中没有此类文件或目录.ProcessBuilder.star