Runtime.getRuntime().exec()函数,输入参数中的通配符(*)不能被UNIX解析,java的缺陷?

eroswzg 2005-04-20 05:26:51
代码:
String cmd = "chmod 755 /tmp/mywork/allProducts/*";
Process process = Runtime.getRuntime().exec(cmdArray);
process.waitFor();
process.destroy();

环境:
Saloris上,调用我的java jar 包运行主程序。其中有个目录/tmp/mywork/allProducts下包含很多产品的子目录,例如:
/tmp/mywork/allProducts/car/
/tmp/mywork/allProducts/bike/
/tmp/mywork/allProducts/chair/
....
我希望在程序中更改这些子目录的访问属性。 在Solaris 上直接调用命令chmod 755 /tmp/mywork/allProducts/* 是没有问题的。但是在上述程序中,却总返回1错误
我后来发现是这个*号引起的,到底是什么原因导致这个通配符在exec中不能用了?欢迎大家讨论。这也许是java的一个缺陷。。。回答有道理者都有分。
...全文
323 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞行的兔子 2005-04-21
  • 打赏
  • 举报
回复
看看java pit falls这本书,里面介绍了很多java的编程陷阱!
eroswzg 2005-04-21
  • 打赏
  • 举报
回复
加上"sh chmod 755 /tmp/mywork/allProducts/*"也不行。。
这个应该被shell解析了吧。。
eroswzg 2005-04-21
  • 打赏
  • 举报
回复
有电子版没?买的太慢了
dyhml 2005-04-20
  • 打赏
  • 举报
回复
我记得*nix中,*是由shell解释后传给应用程序的,
而在java中掉用应用程序是不同过shell的,自然解释不了*.
lasthope 2005-04-20
  • 打赏
  • 举报
回复
关注
eroswzg 2005-04-20
  • 打赏
  • 举报
回复
好像|管道也不行...:(
kingfish 2005-04-20
  • 打赏
  • 举报
回复
的确有这个问题,关注。
eroswzg 2005-04-20
  • 打赏
  • 举报
回复
路径绝对没问题,去掉*这句就可以运行。。加上*就出错
hongyan2004 2005-04-20
  • 打赏
  • 举报
回复
study!
lei8766 2005-04-20
  • 打赏
  • 举报
回复
也许是运行chmod命令时chmod的路径不正确
eroswzg 2005-04-20
  • 打赏
  • 举报
回复
sorry.抄错了
String cmd = "chmod 755 /tmp/mywork/allProducts/*";
Process process = Runtime.getRuntime().exec(cmd);
process.waitFor();
process.destroy();
晨星 2005-04-20
  • 打赏
  • 举报
回复
String cmd = "chmod 755 /tmp/mywork/allProducts/*";
Process process = Runtime.getRuntime().exec(cmdArray);
cmd哪去了?抄错了?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧