IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

[File]Equivalent à "Chmod +x" ?


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2003
    Messages : 10
    Par défaut [File]Equivalent à "Chmod +x" ?
    Bonjour,

    Quelqu'un connait-il le moyen de positionner l'attribut "exécutable" d'un fichier sous unix,linux,bsd,macosX,... sans passer par un "fork" d'une commande "chmod +x ..." ?

    Je pose cette question car si la méthode du "chmod +x" ne me pose aucun souci sous RedHat server 3, sous AIX 5.2 j'ai systématiquement une erreur

    chmod: /opt/myFolder/myFile : A file or directory in the path name does not exist.
    Merci d'avance.

    Olivier

  2. #2
    BiM
    BiM est déconnecté
    Expert confirmé
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par défaut
    Les droits et la répartition des droits n'est pas la même d'un OS à l'autre.

    Exemple :
    Sous Windows, tu répartis comme tu veux et en Linux, c'est groupé, c'est 0 ou 1. C'est pas 0 sauf "machin" c'est 1, etc.

    Donc cela m'étonnerait fortement que les droits soient uniformisés.

    Autre chose : Sur les fichiers, tu peux les mettre en ReadOnly si tu veux.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2003
    Messages : 10
    Par défaut
    J'entends bien que l'implémentation des attribus des fichiers change d'un os à l'autre, mais la métode "canRead()" de la classe "java.io.File" existe bien, non ?

    Cela veut-il pas dire que la gestion d'une notion supportée par tous les OS (quelque soit l'implémentation sous-jascente) peut être fournie dans une interface ?

    Par contre, je suis bien d'accord avec le fait que l'attribut "exécutable" n'est supporté que par tous les OS unixlike.

    Mon assertion : "supportée par tous les OS ", pour qu'une notion soit accessible par une interface unique tombe donc de fait, mais, est-ce que windows ne gèrerait pas cette notion de façon cachée ?

    Comment fonctionne l'implémentation posix de cygwin.dll pour que la commande "chmod" fonctionne sur les volumes NTFS ?...

    Exemple dans une "session" cygwin sur mon pc XP pro ntfs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    parents@rafal ~
    $ echo "ls -la" > ll.sh
     
    parents@rafal ~
    $ . ./ll.sh
    total 5
    drwxrwxrwx+ 2 parents Aucun   0 Dec 21 21:46 .
    drwxrwxrwx+ 3 parents Aucun   0 Mar 29  2005 ..
    -rw-------  1 parents Aucun  88 Apr 10  2005 .bash_history
    -rwxr-xr-x  1 parents Aucun 613 Mar 29  2005 .bash_profile
    -rwxr-xr-x  1 parents Aucun 642 Mar 29  2005 .bashrc
    -rwxr-xr-x  1 parents Aucun 356 Mar 29  2005 .inputrc
    -rw-r--r--  1 parents Aucun   7 Dec 21 21:46 ll.sh
     
    parents@rafal ~
    $ chmod +x ll.sh
     
    parents@rafal ~
    $ ./ll.sh
    total 5
    drwxrwxrwx+ 2 parents Aucun   0 Dec 21 21:46 .
    drwxrwxrwx+ 3 parents Aucun   0 Mar 29  2005 ..
    -rw-------  1 parents Aucun  88 Apr 10  2005 .bash_history
    -rwxr-xr-x  1 parents Aucun 613 Mar 29  2005 .bash_profile
    -rwxr-xr-x  1 parents Aucun 642 Mar 29  2005 .bashrc
    -rwxr-xr-x  1 parents Aucun 356 Mar 29  2005 .inputrc
    -rwxr-xr-x  1 parents Aucun   7 Dec 21 21:46 ll.sh
    Donc en fait ma question est peut être plus large que celle posée initialement :
    Quelqu'un connait-il une implémentation multi-plateforme d'une bibliotèque (classes + dlls jni) qui proposerait une interface d'accès à l'attribut "exécutable" ?

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par ogattaz
    Cela veut-il pas dire que la gestion d'une notion supportée par tous les OS (quelque soit l'implémentation sous-jascente) peut être fournie dans une interface ?
    Oui... mais pendant longtemps la politique de Sun consistait à n'implémenter une fonctionnalité que si elle était implémenté sur les principaux systèmes (Windows et les *n*x en particulier).

    "canRead()" est universelle... Au pire si le système ne gère pas les droits d'accès (ex. Windows 9x) le fichier sera accessible en lecture...

    Citation Envoyé par ogattaz
    Mon assertion : "supportée par tous les OS ", pour qu'une notion soit accessible par une interface unique tombe donc de fait, mais, est-ce que windows ne gèrerait pas cette notion de façon cachée ?
    Non je ne pense pas... Cygwin est une surcouche au système qui simule le même comportement qu'un système unix... mais le fichier ne devient en aucun cas "executable" pour le système, mais seulement pour la console Cygwin...


    Citation Envoyé par ogattaz
    Quelqu'un connait-il une implémentation multi-plateforme d'une bibliotèque (classes + dlls jni) qui proposerait une interface d'accès à l'attribut "exécutable" ?
    Ca doit surement exister mais je ne connais pas...
    Par contre ca ne doit pas être très complexe à coder... A la rigueur on pourrait même se baser sur les commandes chmod et ls sur les système unix...


    Enfin cette notion de fichier executable sera intégré dans Mustang (Java 6.0) : http://download.java.net/jdk6/docs/api/java/io/File.html

    a++

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2003
    Messages : 10
    Par défaut
    Bonjour,

    Merci pour tes remarques et ton renvoi vers la doc de mustang.

    En attendant, j'ai résolu mon problème de fork de chmod sur AIX.
    Si sous RedHat server 3 l'appel de la méthode "exec" pour lancer "chmod" fonctionne bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime.getRuntime().exec("chmod +x /opt/myFolder/myFile");
    Sous AIX 5.2 on a systématiquement l'erreur suivante :
    chmod: /opt/myFolder/myFile : A file or directory in the path name does not exist.
    Par contre, en passant par un fichier temporaire ça fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    /*
     * création du fichier temporaire (détruit à la fermeture de la jvm)
     */
    File wTemporaryCmdFile = File.createTempFile("myTemporaryCmd",".ksh");
    /*
     * écriture de ma commande chmod dans le fichier temporaire via un méthode d'une classe utilitiare
     */
    CFileUtilities.putInFile(wTemporaryCmdFile,"chmod +x /opt/myFolder/myFile");
    /*
     *  "wTemporaryCmdFile" n'a pas besoin d'être "exécutable"
     */
    Runtime.getRuntime().exec("/usr/bin/ksh " + wTemporaryCmdFile.getAbsolutePath()  );
    Je n'ai pas compris pourquoi cela fonctionne, car ayant constaté ce résultat, j'ai testé aussi la forme suivante du lancement de la commande chmod, mais elle me retourne toujours l'erreur mentionnée ci avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getRuntime().exec("chmod +x /opt/myFolder/myFile");
    En attendant mustang , je lance donc un "chmod +x" via un fichier de commande intermédiaire pour que cela fonctionne sous RedHat et AIX 5.2

    Merci à tous de votre attention.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quote et double quote
    Par aktos dans le forum Langage
    Réponses: 8
    Dernier message: 05/01/2007, 19h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo