Runtime.getRuntime().exec()
来源:互联网 发布:金磐网络科技园 编辑:程序博客网 时间:2024/04/24 03:13
转帖:http://www.javaeye.com/topic/146588
问题
- java 使用Runtime.getRuntime().execx执行kstat -p -m /'/^e1000g0|^e1000g$//'失败
- m_process.waitFor()总是返回1
- 0 表示命令执行成功
- 1 表示命令语法错误
- 2 表示命令执行错误
- 解决过程
- 开始不知道为什么出错
- 将命令改为 kstat -p -m /^e1000g0/就可以成功
- 将上了单引号以后,就始终返回1, 即语法错误
- 尝试将单引号改为双引号还是出错
- 但是双引号在solaris下也能执行成功
- 问google
- 查Runtime.getRuntime.exec
- 发现有个老兄翻译的别人的一篇文章中有提到,使用Runtime.getRuntime.exec调用重定向有问题
- 心里隐约觉得,自己的方向可能错了,可能并不是一个单引号那么简单的,导致waitFor返回1
- http://lusong163.itpub.net/post/14139/66778
- 查getRuntime().exec 重定向
- 这是第二天的事了,前天弄到晚上十点,没解决
- 知道没那么容易解决,自己的身体要紧,明天还要回上海呢
- 找到另一个老兄的问题
- http://topic.csdn.net/t/20050309/16/3837564.html#
- 他遇到的和我的不一样,他是调用 ps -ef | grep SSS | grep -v grep | awk '{print $2}'
- 我估计可能也是和这个引号有关系
- 后面有个哥们给了个答案
天啊,就就是这个答案让我灵光一现
(new String[]{"/bin/sh","-c","ps -ef | grep usb | grep -v grep | awk '{print $2}'"}); 这样就可以了.我在Linux系统上试过
注意到了没,命令不是直接使用的ps,那么我在命令中直接使用kstat是不是也是问题呢
- 这是第二天的事了,前天弄到晚上十点,没解决
- 查Runtime.getRuntime.exec
- 解决了
- 根据最后一次找到的哪个关键的帖子
- 将我的命令改为
String[] cmd1 = new String[3]; cmd1[0] = "/bin/sh"; cmd1[1] = "-c"; cmd1[2] = "kstat -p -m /'/^e1000g0|^e1000g$//'";
执行成功啦!!!
- 后来验证,关键在 /bin/sh -c 这个命令头
- 这个在window下执行命令是要使用 cmd作为命令的开头是一个道理
就是因为dir命令是由windows中的解释器解释的,直接执行dir时无法找到dir.exe这个命令,所以会出现文件未找到这个2的错误。如果我们要执行这样的命令,就要先根据操作系统的不同执行不同的解释程序command.com 或者cmd.exe。 (这段是copy的)
"CMD" "/C" ; windows命令中的开头
- 不过这个现象在solaris中可能只出现在哪些有特殊字符的命令中,比如有单引号什么
- 这个在window下执行命令是要使用 cmd作为命令的开头是一个道理
- 发现了一个问题
- 在这个链接中是翻译的老外写的一篇文章,
- http://lusong163.itpub.net/post/14139/66778
- 原文地址 http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
- 其中也提到了 redirect the output of an echo program's simple Java version into the file test.txt.
- 他给出的解决方案是自己写代码重定向文件
- 但是我后来做了一下验证,发现是可以实现重定向文件的
- /bin/sh
- -c
- ls > t.txt
- 这个命令的执行一点问题都没有,t.txt文件也产生了
- 但是使用 java -version >t.txt 能产生文件,但是文件中却没有内容
- 在这个链接中是翻译的老外写的一篇文章,
- 开始不知道为什么出错
- Runtime.getRuntime(). exec( )
- java Runtime.getRuntime().exec
- Runtime.getRuntime().exec
- Runtime.getRuntime().exec()
- Runtime.getRuntime().exec()
- java Runtime.getRuntime().exec()
- Runtime.getRuntime.exec 注意事项
- Runtime.getRuntime().exec()
- Runtime.getRuntime().exec
- Runtime.getRuntime().exec问题
- Runtime.getRuntime().exec(...)使用方法
- 通信-Runtime.getRuntime().exec
- Runtime.getRuntime().exec(strMakePathPath);
- Runtime.getRuntime().exec方法
- Runtime.getRuntime().exec方法
- Runtime.getRuntime().exec
- Runtime.getRuntime().exec();
- Runtime.getRuntime().exec
- FormsAuthentication.SetAuthCookie
- 发现自己越来越堕落了
- (LUA教程)第1章 起点
- 美国西太平洋大学工商管理博士(dba)二期学员通讯录
- 浅析dojo中的有状态对象
- Runtime.getRuntime().exec()
- webservice优点和缺点
- ASP.NET生成随机密码功能
- 超级DNN管理面板
- XMLHTTP对象及其方法
- C++ 高精度计算程序运行时间的程序
- 大数据量表 create table
- 模拟电子技术39 61-------- 正 负 反馈 介绍 续
- C++赋值的两种形式