GNU/Linux >> Tutoriels Linux >  >> Linux

Programme Shell pour ouvrir simplement un pilote de personnage et attendre ?

Ce qui a inspiré cette question, c'est que je teste la fonctionnalité de l'appareil de surveillance et je pensais s'il y avait une commande intégrée au shell pour simplement ouvrir l'appareil et ne rien faire/attendre jusqu'à la fin ?
Echo/touch semblent simplement ouvrir et fermer l'appareil immédiatement après avoir effectué l'opération. Cat ne semble pas fonctionner.

J'utilise une application C pour faire la même chose, mais je me demandais si le script shell avait des dispositions pour cela

Réponse acceptée :

Dans les coquilles de type Bourne,

exec 3< "$device"

Ouvre le périphérique sur le descripteur de fichier 3 du shell.

Cela équivaudrait plus ou moins à des C :

fd = open(device, O_RDONLY);
if (fd < 0) handler_error(...);
if (fd != 3) { dup2(fd, 3); close(fd); }

(ksh93 fait aussi un fcntl(3, F_SETFD, FD_CLOEXEC) sur ce fd).

Pour le fermer :exec 3<&-

En zsh , ksh93 et bash , l'équivalent de fd = open(device, O_RDONLY) peut aussi s'écrire :

exec {fd}< "$device"

Où le descripteur de fichier serait le premier libre au-dessus de 9 et stocké dans $fd .

Pour le fermer :exec {fd}<&-

Remplacer < avec > pour O_WRONLY|O_CREAT|O_TRUNC , et avec <> pour O_RDWR|O_CREAT et >> pour O_WRONLY|O_CREAT|O_APPEND .

zsh a aussi un sysopen intégré (dans le zsh/system module) où vous pouvez spécifier exactement les drapeaux.

Notez que dans les shells compatibles POSIX, exec étant un intégré spécial , si le fichier ne peut pas être ouvert, c'est une erreur fatale lorsqu'il n'est pas interactif (il quitte le script). Vous pouvez désactiver cela en utilisant la command commande.

if command exec 3< "$device"; then
  do-what-you-need-to-do
else
  handle-the-error-yourself
fi

Linux
  1. Comment programmer avec Bash :syntaxe et outils

  2. Comment installer un pilote de périphérique sous Linux

  3. Linux - Sysfs et Devtmpfs ?

  4. Linux - Comment le noyau Linux connaît-il les numéros majeurs et mineurs des périphériques ?

  5. Qu'est-ce qu'un caractère spécial et un bloc de fichiers spéciaux dans un système Unix ? ?

Comment installer et utiliser Nu Shell sous Linux

Différence entre le shell de connexion et le shell sans connexion ?

Linux - Pourquoi utilisons-nous Su - Et pas seulement Su ?

Comment écrire et exécuter un programme C sous Linux

Comment lire un seul caractère dans un script shell

Déterminer si le chemin relatif ou absolu dans le programme shell