Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Java appelant cmde Unix : Pb environnement

3 réponses
Avatar
Macache
Bonjour,

Je suis en train de développer une application Unix qui récupère une
partie de ses conditions d'utilisation par des variables d'environnement
(par exemple un PATH, des options d'impression).

Cette commande est susceptible d'être appelée par un programme java, qui
pourra éventuellement fixer lui-même les conditions d'utilisation (choix
entre plusieurs PATHs prédéfinis, ...).

Le développeur de la partie java m'affirme qu'il n'est pas possible de
définir des variables d'environnement puis de lancer la commande Unix ;
il me demande donc de ne pas utiliser de variable d'environnement mais
de passer toutes les options au moyen des paramètres de la ligne de
commande !


Pour ma part, je vois au moins une solution - pas d'une élégance folle :

le programme java génère un fichier texte en shell ou en cshell pour
regrouper la définition des variables d'environnement et l'appel de
commande Unix :

#!/bin/csh
setenv MYPATH /home/user/dir1:/users/data2:/tmp
setenv PR_LVL 7
/usr/bin/batman $*

Au lieu d'exécuter la commande "batman", le programme java exécute le
c-shell.


Quelqu'un voit-il une autre solution ? Comment se débrouille-t-on quand
l'application Unix est un produit standard du commerce, non modifiable ?

Merci de vos réponses avisées.
Macache

3 réponses

Avatar
sebastien mathy
Macache wrote:

Bonjour,

Je suis en train de développer une application Unix qui récupère une
partie de ses conditions d'utilisation par des variables d'environnement
(par exemple un PATH, des options d'impression).

Cette commande est susceptible d'être appelée par un programme java, qui
pourra éventuellement fixer lui-même les conditions d'utilisation (choix
entre plusieurs PATHs prédéfinis, ...).

Le développeur de la partie java m'affirme qu'il n'est pas possible de
définir des variables d'environnement puis de lancer la commande Unix ;
il me demande donc de ne pas utiliser de variable d'environnement mais
de passer toutes les options au moyen des paramètres de la ligne de
commande !


Pour ma part, je vois au moins une solution - pas d'une élégance folle :

le programme java génère un fichier texte en shell ou en cshell pour
regrouper la définition des variables d'environnement et l'appel de
commande Unix :

#!/bin/csh
setenv MYPATH /home/user/dir1:/users/data2:/tmp
setenv PR_LVL 7
/usr/bin/batman $*

Au lieu d'exécuter la commande "batman", le programme java exécute le
c-shell.


Quelqu'un voit-il une autre solution ? Comment se débrouille-t-on quand
l'application Unix est un produit standard du commerce, non modifiable ?



Je pense que le developpeur Java a raison. Tu dois offrir la possibilité de
passer des arguments en ligne de commande. Tous les programmes unix
statndard bien fait le permette. Par cntre rien ne t'empeche (et c'est meme
conseillé) si les arguments ne sont pas passés d'aller les chercher dans
les variables d'environnement.

Avatar
Macache
sebastien mathy a écrit:


Je pense que le developpeur Java a raison. Tu dois offrir la possibilité de
passer des arguments en ligne de commande. Tous les programmes unix
statndard bien fait le permette. Par cntre rien ne t'empeche (et c'est meme
conseillé) si les arguments ne sont pas passés d'aller les chercher dans
les variables d'environnement.



Merci du commentaire - en l'occurence, je reçois déjà les paramètres
usuels par le biais des arguments, mais j'attends aussi un PATH qui peut
être constitué de 1 à 40 chaînes de caractères ; c'est lui que le
programmeur java souhaite envoyer sous forme de 1 à 40 arguments. J'ai
rarement vu de programme Unix standard se plier à ce genre de
contraintes (pas encore assez vécu, sans doute ?).

Avatar
sebastien mathy
Macache wrote:

sebastien mathy aparamètre

Je pense que le developpeur Java a raison. Tu dois offrir la possibilité
de passer des arguments en ligne de commande. Tous les programmes unix
statndard bien fait le permette. Par cntre rien ne t'empeche (et c'est
meme conseillé) si les arguments ne sont pas passés d'aller les chercher
dans les variables d'environnement.



Merci du commentaire - en l'occurence, je reçois déjà les paramètres
usuels par le biais des arguments, mais j'attends aussi un PATH qui peut
être constitué de 1 à 40 chaînes de caractères ; c'est lui que le
programmeur java souhaite envoyer sous forme de 1 à 40 arguments. J'ai
rarement vu de programme Unix standard se plier à ce genre de
contraintes (pas encore assez vécu, sans doute ?).


oui effectivement ce n'est pas courant.
Il faut je pense passer qu'un seul paramètre avec les paths separé par : ou
un ;. Toi tu utilise le path systeme et tu concatenes la chaine passé en
paramètre. Ca devrais etre bon ca non?