我正试图从Java中找到当前登录的用户名。从Java运行“who -m”命令会产生空的结果
Process p;
try
{
p = Runtime.getRuntime().exec("who -m");
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine()) != null)
System.out.println(line);
}
catch (Exception e)
{
}
上面的代码不打印任何结果。但是,如果我删除-m选项,它会打印用户名和其他详细信息。而且我还测试了其他选项,如-s,-u。除-m以外,它都可以工作。有没有人有一个想法,为什么这样呢?
注: 我知道
System.getProperty("user.name");
但是,这不是在我的情况的解决方案。我正在调用其中使用“who -m”的shell脚本。所以,我不能使用java类。
你在命令行上试过吗? – jgr208 2014-09-30 14:47:15
我的'who'手册页说'谁-m'只显示“与stdin关联的主机名和用户”。如果标准输入已更改,则可能有问题。 – ajb 2014-09-30 15:09:18
@ jgr208 - 是的。我做到了。它适用于命令行,但不适用于Java环境。 – 2014-09-30 15:26:49