2012-10-31 23 views
5

Desidero conoscere il proprietario del processo corrente in Unix utilizzando Java. Voglio trovare il nome del proprietario del server corrente. Ho provato con il comando "who am i" in Runtime.getRuntime(). Exec(), ma non mi ha restituito alcun risultato.Utilizzo di java per ottenere il proprietario del processo corrente

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); 
} 

C'è qualcosa di sbagliato in questo codice o di qualsiasi idea di come posso trovare il proprietario del processo corrente utilizzando Java?

+0

È necessario sudo per quello, giusto? – Shark

+1

@assylias Penso che dovresti prima rispondere come risposta ... – ppeterka

risposta

7

prima cosa, penso che System.getProperty("user.name") dovrebbero lavorare per questo

Seconda cosa, il motivo per il codice non restituisce nulla perché il comando è whoami senza spazi così la linea exec dovrebbe essere (supponendo si esegue su Windows tramite cygwin o su un sistema basato su ** nix)

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

"who am i" va bene. [uomo che] (http://unixhelp.ed.ac.uk/CGI/man-cgi?who+1) – ignis

+2

'who am i' restituisce vuoto sul mio sistema –

+1

Se non avessi' who', tu avrebbe letto qualcosa come "bash: comando non trovato". Rende 'which who' anche quello vuoto? (supponendo che tu sia su Unix/BSD/Mac/Linux) – ignis

Problemi correlati