我正試圖從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