gpt4 book ai didi

Java Unix 终端

转载 作者:行者123 更新时间:2023-12-02 08:04:22 29 4
gpt4 key购买 nike

我正在尝试用java编写一个unix终端模拟器。我有很多麻烦。我似乎无法更改程序的工作目录,因此“cd”等命令无法正常工作。我的问题是,如果我运行一个需要用户输入的命令,有什么方法可以将该输入发送到正在运行的进程吗?

非常感谢,这给了我很大的帮助。这是一个例子:输入流= null; 输出流 outS = null;

    StringBuffer commandResult = new StringBuffer();
String line = null;
int readInt;


p = Runtime.getRuntime().exec("gksudo apt-get install firefox");

int returnVal = p.waitFor();


in = p.getInputStream();



while ((readInt = in.read()) != -1)
commandResult.append((char)readInt);
outS = (BufferedOutputStream) p.getOutputStream();
outS.write("Y".getBytes());
outS.close();

System.out.println(commandResult.toString());
in.close();

这是输出:

Reading package lists...
Building dependency tree...
Reading state information...
The following packages were automatically installed and are no longer required:
libmono2.0-cil libmono-data-tds2.0-cil libmono-system-data2.0-cil
libdbus-glib1.0-cil librsvg2-2.18-cil libvncserver0 libsqlite0
libmono-messaging2.0-cil libmono-system-messaging2.0-cil
libmono-system-data-linq2.0-cil libmono-sqlite2.0-cil
libmono-system-web2.0-cil libwnck2.20-cil libgnome-keyring1.0-cil
libdbus1.0-cil libmono-wcf3.0-cil libgdiplus libgnomedesktop2.20-cil
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
firefox-globalmenu
Suggested packages:
firefox-gnome-support firefox-kde-support latex-xft-fonts
The following NEW packages will be installed:
firefox firefox-globalmenu
0 upgraded, 2 newly installed, 0 to remove and 5 not upgraded.
Need to get 15.2 MB of archives.
After this operation, 30.6 MB of additional disk space will be used.
Do you want to continue [Y/n]? Abort.

为什么在我输入“Y”之前它就中止了?

最佳答案

是的;请参阅Process#getOutputStream()获取 Process 的“标准输入”(stdin) 流对象。

关于更改目录的问题,我不认为JVM一旦启动就可以更改其工作目录。但是,您的程序可以将“当前工作目录”的概念建模为一个变量,当它执行与该位置相关的操作(例如启动进程、列出目录内容等)时使用该变量。 ProcessBuilder class甚至有办法set the working directory对于它产生的流程。

关于Java Unix 终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8404592/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com