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

Shell et commandes GNU Discussion :

Utilisation de tmpfile


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut Utilisation de tmpfile
    Bonjour, j'utilise un script qui nécessite un fichier temporaire et je lisais ce weekend que pour éviter certain trous de sécurité il valait mieux utiliser la fonction tmpfile pour créer ce fichier temporaire.

    Hélas (je ne suis pas doué en shell), je n'arrive pas à m'en servir dans mon script.

    Est ce possible, vu que c'est une fonction de librairie C ? Si oui comment m'en servir ?

    Si non, existe il une commande unix équivalente ?


    merci d'avance

  2. #2
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par in
    Si non, existe il une commande unix équivalente ?
    mktemp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mon_fich_temp=$(mktemp /tmp/temporaire.XXXXXXXXXX)
    echo "Stockage temporaire" > $mon_fich_temp
    rm -f $mon_fich_temp
    Lors de la création, les XXXXX seront remplacés par un "matricule" réputé unique, donc sûr vis-à-vis de la concurrence et des collisions.

  3. #3
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    bon je dois etre un peu brele ...

    je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tmp=$(mktemp /tmp/temporaire.XXXXXXXXXX)
    echo $tmp
    et j'obtiens :

    ./mon_script.sh[65]: mktemp: introuvable
    Est si c'est sensé marcher pour mktemp, pourquoi pas pour tmpfile ?

  4. #4
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par in
    et j'obtiens : un erreur
    A vue de nez, je dirais que :
    • soit mktemp n'est pas accessible par le PATH
    • soit mktemp n'est pas installé/disponible sur ta machine


    Citation Envoyé par in
    Est si c'est sensé marcher pour mktemp, pourquoi pas pour tmpfile ?
    mktemp est une fonction shell éponyme à une fonction de la bibliothèque standard du C. Ce n'est pas nécessairement pour autant qu'elle se comporte de la même manière ... et tmpfil est aussi une fonction de la bibliothèque standard, et il n'y a pas (encore) de fonction shell du même nom ...

  5. #5
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Citation Envoyé par 2Eurocents
    A vue de nez, je dirais que :
    • soit mktemp n'est pas accessible par le PATH
    • soit mktemp n'est pas installé/disponible sur ta machine
    Oui en effet, un which me retourne no mktemp ... et bon si c'est pas dans
    /usr/bin, /usr/oocal/bin ... à mon avis ce n'est pas installé. Comme ce script doit tourner dans plusieurs divisions de la boite, je pense que je vais lacher l'affaire.

    Citation Envoyé par 2Eurocents
    mktemp est une fonction shell éponyme à une fonction de la bibliothèque standard du C. Ce n'est pas nécessairement pour autant qu'elle se comporte de la même manière ... et tmpfil est aussi une fonction de la bibliothèque standard, et il n'y a pas (encore) de fonction shell du même nom ...
    Ok merci pour l'info.


    Du coup, je pose une autre question.
    à part créer un fichier temporaire du style tmp$$, ya un truc plus efficace et pas trop lourd pour éviter les problèmes de concurrence et collision ?

    (enfin je ne sais meme pas si c'est important pour les gens de ma boite, mais bon je me dis autant le faire bien ce script ...)

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Par défaut
    le fichier_tmp.$$ est tous a fait correcte et te garantie une bonne unicité (le systeme interdit 2 process avec le même PID)

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

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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