Runtime.getRuntime.exec (“qui suis-je”) ne donnant pas les résultats souhaités

Je dois trouver l’utilisateur connecté à partir du code Java, donc j’utilise les options suivantes: Runtime.getRuntime.exec (“who”) Runtime.getRuntime.exec (“who am i”)

Les deux donnent le même résultat (le résultat que je reçois quand je donne la commande à l’invite). Je suppose qu’il ne reconnaît rien après l’espace. Je l’ai essayé avec d’autres commandes mais le même résultat.

Y a-t-il un problème avec le code ou dois-je définir un environnement, aide plz.

Si vous avez juste besoin de connaître le nom de l’utilisateur actuellement connecté, et aucune des autres informations de la commande who (comme le nom pty, etc.), vous devez utiliser

 System.getProperty("user.name"); 

De cette façon, vous restz indépendant de la plate-forme, indépendant des parameters régionaux (le format de la sortie de who am i peut être différent si vous n’utilisez pas les parameters régionaux C ) et il est beaucoup plus robuste que d’appeler une commande externe.

Le premier paramètre de la fonction Runtime.exec () ne prend que le nom du programme.

Pour transmettre des arguments, vous devez utiliser une version différente, telle que Runtime.exec (Ssortingng [] cmdarray). Exemple:

 Runtime.getRuntime().exec(new Ssortingng[] {"who", "am", "i"} ); 

Ou plus facilement:

 Runtime.getRuntime().exec("who am i".split()); 

Qui utilise la méthode Ssortingng.split () pour diviser les espaces.