7
votes

Sh: Comment éviter de clocer des descripteurs de fichier numérotés?

Quand j'ai

  exec 3>>file               # file descriptor 3 now points to file
  [ $dryrun ] && exec 3>&1   # or possibly to stdout
  echo "running">&3
  exec 3>&-                  # and is now closed
  • y a-t-il un Next_available_fd code>? Li>
  • Y a-t-il un moyen de dupliquer FD3 à une variable, puis de le rembourser une fois la fonction effectuée?
    • et devrais-je m'inquiéter de la filetage et des écritures simultanées à FD3 dans ce cas? LI> ul> li>
    • Je suis en sh, mais peut-être que Bash / ksh / zsh a une réponse à cela? Li> ul> p>


0 commentaires

3 Réponses :


1
votes

Je ne sais pas quoi que ce soit aussi simple que Next_available_fd , mais pour obtenir la fonctionnalité que vous souhaitez (rediriger temporairement un descripteur de fichier sans l'affecter à l'extérieur de la fonction) peut être accompli comme suit dans Bash (Je ne sais pas à propos de SH): xxx

le fichier résultat1 : xxx

et fichier3 : xxx

qui démontre que la redirection est limitée à l'appel de la fonction dans chaque cas.


1 commentaires

Désolé, quelle partie de votre code d'exemple démontre quoi?



0
votes

Si votre système utilise le système de fichiers / proc , regardez INTÉRIEUR / proc / $$ / fd pour voir ce qui est en cours d'utilisation.


0 commentaires

1
votes

au lieu d'utiliser EXED pour rediriger le descripteur de fichier dans la fonction, vous pouvez (avec bash, je n'ai pas essayé avec d'autres coquilles) faire: xxx

dans cette configuration "en cours d'exécution" "ira au fichier ou au stdout d'origine en fonction de $ dryrun, et plus_commands aura FD 3 comme avant que FOO ait été appelé.


0 commentaires