Deseo enviar algunos datos a un proceso raíz con un canalización con nombre. Aquí está la secuencia de comandos y funciona muy bien:Script Bash con lectura no bloqueada
#!/bin/sh
pipe=/tmp/ntp
if [[ ! -p $pipe ]]; then
mknod -m 666 $pipe p
fi
while true
do
if read line <$pipe; then
/root/netman/extra/bin/ntpclient -s -h $line > $pipe 2>&1
fi
done
De hecho, tengo varios guiones como este. Me gustaría incluirlos a todos en un solo script. El problema es que los bloques de ejecución en la primera "lectura" y no puedo ejecutar varias "lecturas" en un solo proceso. ¿No hay nada que pueda hacer? ¿Es posible tener una lectura bash "sin bloqueo"?
¿Por qué quiere combinar operaciones separadas en una sola ¿guión? Si cada uno funciona correctamente de manera independiente, déjelos independientes. Es mucho más fácil que intentar doblar el caparazón para hacer lecturas sin bloqueo. Los procesos son baratos. Los procesos simples también son más seguros que los complejos, y los procesos raíz deben ser seguros. –
Estoy de acuerdo con usted, pero cada proceso come 628K de RAM (es una copia del bash) y estoy en un entorno incrustado. Preferiría guardar tanta memoria como sea posible. – michelemarcon
Si es un gran problema, escriba el código en C. –