GNU/Linux >> Tutoriales Linux >  >> Linux

¿Programa Shell para simplemente abrir un controlador de caracteres y esperar?

Lo que inspiró esta pregunta es que estoy probando la funcionalidad del dispositivo de vigilancia y estaba pensando si hay un comando incorporado de shell para simplemente abrir el dispositivo y no hacer nada/esperar hasta que termine.
Echo/touch parece que simplemente abre y cierra el dispositivo inmediatamente después de realizar la operación. Cat no parece funcionar.

Estoy usando una aplicación C para hacer lo mismo, pero me preguntaba si el script de shell tiene alguna disposición para ello

Respuesta aceptada:

En caparazones tipo Bourne,

exec 3< "$device"

Abre el dispositivo en el descriptor de archivo 3 del shell.

Eso sería más o menos equivalente a C:

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

(ksh93 también hace un fcntl(3, F_SETFD, FD_CLOEXEC) en ese fd).

Para cerrarlo:exec 3<&-

En zsh , ksh93 y bash , el equivalente de fd = open(device, O_RDONLY) también podría escribirse como:

exec {fd}< "$device"

Donde el descriptor de archivo sería el primero libre arriba de 9 y almacenado en $fd .

Para cerrarlo:exec {fd}<&-

Reemplazar < con > para O_WRONLY|O_CREAT|O_TRUNC , y con <> para O_RDWR|O_CREAT y >> para O_WRONLY|O_CREAT|O_APPEND .

zsh también tiene un sysopen integrado (en el zsh/system módulo) donde puede especificar las banderas exactamente.

Tenga en cuenta que en los shells compatibles con POSIX, exec ser un construido especial , si el archivo no se puede abrir, es un error fatal cuando no es interactivo (sale del script). Puede deshabilitarlo usando el command comando.

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

Linux
  1. Cómo leer un solo carácter en el script de Shell

  2. ¿Cuál es la diferencia entre un controlador de plataforma Linux y un controlador de dispositivo normal?

  3. Controlador de dispositivo IOCTL Linux

  4. diferencia entre archivo de dispositivo y controlador de dispositivo

  5. ¿Puede un script de shell esperar a que cambie un archivo y actuar?

Cómo programar con Bash:Sintaxis y herramientas

Cómo instalar un controlador de dispositivo en Linux

Cómo instalar y usar Nu Shell en Linux

Linux:¿Sysfs y Devtmpfs?

¿Encontrar capacidades del controlador/dispositivo Wifi?

Cómo escribir y ejecutar un programa C en Linux