2012-10-31 56 views
5

我想知道Unix中使用Java的當前進程的所有者。我想查找當前服務器的所有者名稱。我嘗試在Runtime.getRuntime()。exec()中運行「我是誰」命令,但它沒有返回任何結果。使用java獲取當前進程所有者

String line = ""; 
Process p = Runtime.getRuntime().exec("who am i"); 
InputStream iStream = p.getInputStream(); 
InputStreamReader inputStreamReader = new InputStreamReader(iStream); 
BufferedReader bufReader = new BufferedReader(inputStreamReader); 
while ((line = bufReader.readLine()) != null) { 
    System.out.println("Input "+line); 
} 

這有什麼不對的代碼或任何想法,我怎麼能找到使用Java當前進程的所有者?

+0

你需要sudo,對嗎? – Shark

+1

@assylias我認爲你應該pst作爲一個答案... – ppeterka

回答

7

的第一件事情,我覺得System.getProperty("user.name")應該爲

第二件事工作,你的代碼不返回任何東西的原因是因爲該命令是whoami沒有空格,以便您的EXEC行應(假設你正在運行的窗口通過cygwin或基於** nix的系統)

Process p = Runtime.getRuntime().exec("whoami"); 
+0

'我是誰'也很好。 [man who](http://unixhelp.ed.ac.uk/CGI/man-cgi?who+1) – ignis

+2

'我是誰'在我的系統上返回空白 –

+1

如果你沒有'who',你會看到類似'bash:command not found'的東西。 '誰'也是空白的? (假設你在Unix/BSD/Mac/Linux上) – ignis