我需要从java代码中找到登录用户,所以我使用以下选项: Runtime.getRuntime.exec( “谁”) Runtime.getRuntime.exec(“我是谁”)
两者都给出相同的结果(当我在提示符上给出who命令时得到的结果)。 我想它不会在空间之后识别任何东西。我也尝试了其他命令但结果相同。
代码是否有问题,或者我需要设置一些环境,PLZ帮助。
答案 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
的输出格式可能会有所不同)并且它比调用外部命令。