代码之家  ›  专栏  ›  技术社区  ›  amertune

如何在Java中获得用户名(即,谁在爪哇中)(或Jython 2.1)

  •  2
  • amertune  · 技术社区  · 15 年前

    情况是这样的。我在一个共享帐户中有一个Jython2.1脚本,需要知道谁在调用它。在bash中,我可以简单地使用$(who-m),它会给我正确的用户名。

    所谓“共享帐户”,我的意思是我以自己的身份登录,然后$(sudo su-shared_account)进入共享帐户。

    我在Java(或Jython)中找不到任何能给我类似结果的东西。即使尝试调用runtime.getruntime().exec(“who-m”)也不会做任何事情。当我试图从exec返回的进程中读取inputstream时,该流为空。

    3 回复  |  直到 11 年前
        1
  •  3
  •   Marcus Adams    15 年前

    要让进程所有者执行以下操作:

    System.getProperty("user.name");
    

    getruntime().exec()的语法很复杂。

    Runtime.getRuntime().exec(new String[] {"/path/to/who", "-m"});
    
        2
  •  1
  •   amertune    15 年前

    我想出了一个选择,尽管我并不真的喜欢:

    将此标志添加到Java调用中:

    -Duser.name="$(who -m | awk '{print $1}')"
    

    然后使用以下命令访问用户名:

    System.getProperty('user.name')
    
        3
  •  0
  •   user3269541    11 年前

    你可以用这个。

    System.out.println( System.getProperties().getProperty("user.name"));