Comprendido, read requiere una variable. Lo que se buscaba es las distintas maneras posibles de captar una tecla en programa C sin tener que teclear Enter. Visto varias que tengo que investigar, usando ncurses, o cosas como ésta:
https://www.iteramos.com/pregunta/77064/como-evitar-pulsar-enter-con-getchar-para-leer-un-solo-caracterpero al ver el read del S.O. y no haber visto nada de eso por Google pense si seria posible.
Al final si que he encontrado una forma que parece funciona. Primero creo un script en bash que use read para leer una variable y guardarla en un fichero y luego en C un programa que ejecuta e script con system y luego abre el fichero y lee el caracter. Y funciona en Ubunto, el script lee el carácter sin tener que pulsar Enter.
Ya se los incovenientes de system, como ya he dicho es curiosidad por ver de cuantas formas se puede leer una tecla sin Enter.
Dejo aqui como lo he hecho yo.
El script de nombre captar_tecla_0.sh:
#!/bin/bash
read -n1 variable
echo $variable > tecla.txt
exit
Y el programa en C:
// intenta captar tecla usando system con un script .sh
#include <stdio.h>
int main ()
{
FILE *fichero_con_tecla;
char tecla;
system ("./captar_tecla_0.sh"); if ( (fichero_con_tecla
= fopen ("tecla.txt", "r")) == NULL
) {
printf ("\nError en apertura de fichero\n"); return 0;
}
tecla
= fgetc (fichero_con_tecla
); printf ("\nLa tecla es: %c\n", tecla
); return 0;
}