OVH Cloud OVH Cloud

exec x>&y => Device or resource busy !

12 réponses
Avatar
Cyrille Lefevre
Bonjour,

os : RHEL 4.4
shell : bash 3.0.15
commande : exec 9>&1
sympt=F4me (al=E9atoire) :
/path/to/script: line XXX: 1: Device or resource busy

une id=E9e ?

Cordialement,

Cyrille Lefevre.
--=20
mailto:Cyrille.Lefevre-news%nospam@laposte.net.invalid
supprimer "%nospam% et ".invalid" pour me repondre.

2 réponses

1 2
Avatar
Stephane CHAZELAS
2010-07-12, 01:48(+02), Cyrille Lefevre:
Le 11/07/2010 21:25, Stephane CHAZELAS a écrit :
2010-07-10, 16:32(+02), Cyrille Lefevre:
[...]
init() { exec 9>&1 && _FD=9 || _FD=2; }


[...]

Normalement, si "exec" fail, ca exit le script.



je t'assure que non, exemple de trace ci-dessous, pas de pj, ça passe
pas :-(


[...]

Apparemment pour bash et ksh93, ce n'est le cas que quand ils
sont en mode POSIX/sh.

--
Stephane
Avatar
Cyrille Lefevre
Le 12/07/2010 15:33, Stephane CHAZELAS a écrit :
2010-07-12, 01:48(+02), Cyrille Lefevre:
Le 11/07/2010 21:25, Stephane CHAZELAS a écrit :
2010-07-10, 16:32(+02), Cyrille Lefevre:
[...]
init() { exec 9>&1&& _FD=9 || _FD=2; }


[...]

Normalement, si "exec" fail, ca exit le script.



je t'assure que non, exemple de trace ci-dessous, pas de pj, ça p asse
pas :-(


[...]

Apparemment pour bash et ksh93, ce n'est le cas que quand ils
sont en mode POSIX/sh.



Bonjour,

en ce qui concerne bash, je peux te garantir que je ne suis surtout pas
en mode POSIX, essentiellement pour la raison ou VAR=value function
args est équivalent à VAR=value; function args.

par ailleurs, test sous cygwin :

$ bash --version
GNU bash, version 3.2.49(23)-release (i686-pc-cygwin)
Copyright (C) 2007 Free Software Foundation, Inc.

$ cat /tmp/z
exec 9>&4
echo ok

$ bash /tmp/z
/tmp/z: line 1: 4: Bad file descriptor
ok

par contre, effectivement, en mode posix ou ksh88 :

$ cat /tmp/z
set -o posix
exec 9>&4
echo ok

$ bash /tmp/z
/tmp/z: line 2: 4: Bad file descriptor

$ ksh88 /tmp/z
/tmp/z: 4: bad file unit number

à la limite, ça m'arrange que le shell ne se plante pas dans ce cas
précis car les scripts en cause ne font pas d'indispo grace à
l'ignorance de bash :-)

à ce propos, j'avais également un pb de redirection sur un fifo corrigé
par l'ajout d'un sleep afin de laisser le temps au fork/exec d'ouvrir
le fifo en lecture avant de faire la redirection dessus... mais la
aussi, le pb était plus ou moins aléatoire !

qqc du genre :

cmd < fifo &
pid=$!
sleep 1
exec 1> fifo

je n'ai hélas plus le message d'erreur...

Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
1 2