Comment fermer stdin dans un script shell?

13

J'ai un programme incorrect que je dois appeler à partir de mon script. Il sort dès qu'il voit quelque chose sur stdin. Existe-t-il un moyen de fermer stdin?

Sundae
la source

Réponses:

21

Existe-t-il un moyen de fermer stdin?

Descripteurs de fichiers de fermeture

  • n<&- Fermer le descripteur de fichier d'entrée n.

  • 0<&-ou <&-Fermer stdin.

Source Chapitre 20. Réacheminement E / S

DavidPostill
la source
8

Il suffit de diriger dans un programme sans sortie:

: | misbehaving_program
choroba
la source
Wow, qu'est-ce que c'est? Que fait «:»?
KaiserKatze
":" est une commande interne du shell qui ne fait rien. Il vous permet d'introduire des commentaires ou peut être utilisé pour les redirections. Par exemple, ":> fichier" crée un fichier vide. Ou ": |" dans ce cas, envoie un flux vide à la commande.
Raúl Salinas-Monteagudo
8

Trouvé, vous pouvez fermer stdin avec:

exec 0<&-
Sundae
la source
5

Selon ce que vous dites, vous pouvez résoudre votre problème simplement

pickyProgram < /dev/null
Raúl Salinas-Monteagudo
la source