Runtime.getRuntime.exec("我是谁")没有给出想要的结果

时间:2012-02-05 08:32:55

标签: java shell unix

我需要从java代码中找到登录用户,所以我使用以下选项: Runtime.getRuntime.exec( “谁”) Runtime.getRuntime.exec(“我是谁”)

两者都给出相同的结果(当我在提示符上给出who命令时得到的结果)。 我想它不会在空间之后识别任何东西。我也尝试了其他命令但结果相同。

代码是否有问题,或者我需要设置一些环境,PLZ帮助。

2 个答案:

答案 0 :(得分:2)

Runtime.exec()函数的第一个参数只接受程序名。

为了传递参数,您需要使用不同的版本,例如Runtime.exec(String [] cmdarray)。例如:

Runtime.getRuntime().exec(new String[] {"who", "am", "i"} );

或者,更容易:

Runtime.getRuntime().exec("who am i".split());

使用String.split()方法拆分空格。

答案 1 :(得分:2)

如果您只需要知道当前登录用户的名称,而不知道who命令的其他信息(如pty名称等),则应使用

System.getProperty("user.name"); 

这样,您可以保持独立于平台,与语言环境无关(如果您不使用who am i语言环境,则C的输出格式可能会有所不同)并且它比调用外部命令。