Java执行Shell命令不工作
我正在制作一个简单的Javasocket程序,将文本从一台计算机发送到另一台计算机
代码:
Scanner scan = new Scanner(System.in);
System.out.println("Starting Server...");
ServerSocket server = new ServerSocket(7777);
程序将socket绑定到上面代码示例第3行的端口7777。 然而,这个程序有时会返回一个BindException。为了解决这个问题,我在绑定之前添加了这行代码:
Runtime.getRuntime().exec("lsof -t -i:7777 | xargs kill");
总之:
Scanner scan = new Scanner(System.in);
System.out.println("Starting Server...");
Runtime.getRuntime().exec("lsof -t -i:7777 | xargs kill");
ServerSocket server = new ServerSocket(7777);
这个应该运行shell命令来终止在端口7777上运行的任何进程。 但事实并非如此。如果在终端中键入相同的命令。如果我使用与上例第4行相同的语法,并使用不同的命令,比如“say hello”,则该命令有效,但kill命令无效
所以
为什么这个命令不能执行
谢谢
# 1 楼答案
^{} 将而不是通过shell启动命令,而这是使用管道时所必需的。试试这个:
在继续执行之前,您需要等待完成,请使用^{} :