Comando exec

Imagen de yo_mismo1210
0 puntos

Acabo de hacerme con un Arduino, y tengo un programa sencillo que enciende un led si le mando un 1 y lo apago si mando cualquier otro caracter.
Quiero hacer esto mismo desde la terminal, así que encontré este script:

#!/bin/bash
exec 3<> /dev/ttyACM0
sleep 2
echo -n "1" >&3
exec 3>&-

que al ejecutarlo funciona correctamente, pero no entiendo cómo.
Supongo que "exec 3<> /dev/ttyACM0" será algo así como abrir el puerto ACM0
y "echo -n "1" >&3" mandar un 1 al puerto 3????

¿Alguien me podría explicar qué hace este script, o dónde encontrar información sobre el comando exec? (porque no entiendo nada de lo que pone en "man exec" )

Muchas gracias por cualquier indicación que me podais dar.

Imagen de rioport
+1
0
-1

A ver si alguien aclara mejor sobre el comando exec, pero de momento lo que sé (y puedo estar equivocado) es que con exec 3<> /dev/ttyACM0 estás abriendo el "archivo" /dev/ttyACM0 para escritura y asignadole 3 como descriptor de archivo. sleep 2 espera 2 segundos. echo -n "1" >&3 Envía un 1 (sin el retorno de carro) al descriptor de archivo 3, que apunta a /dev/ttyACM0. Y con exec 3>&- cierra el descriptor de archivo 3.

Edito: esto [2] te puede ayudar (está en inglés).

+1
0
-1

-- GC --

Imagen de yo_mismo1210
+1
0
-1

Eso es más o menos es lo que imaginaba, pero mi duda es si quisiera modificar este script en un futuro, por ejemplo, ¿puedo usar cualquier número como descriptor? ¿<> significa que puedo escribir y leer en /dev/ttyACM0? ¿si pusiera "exec 3< /dev/ttyACM0" podría leer pero no escribir? ¿lo que cierra es "&-"?

Muchas gracias por la ayuda!!

+1
0
-1
Imagen de rioport
+1
0
-1

No creo que sea lo único que quieras hacer con el arduino, por lo tanto deberías ir a un foro de arduino para que puedas obtener más ayuda sobre su uso. 1: Creo que no, solo del 3 al 9. 2: Sí. 3: Por los ejemplos que he visto, sí, así parece. No entiendo tu última pregunta, lo que cierra el descriptor de archivo 3 es todo el comando completo (exec 3>&-).

+1
0
-1

-- GC --

Imagen de yo_mismo1210
+1
0
-1

Muchas gracias por la ayuda. Por ahora me vale con saber estas cosas, aunque seguiré investigando sobre el comando exec....

+1
0
-1