Você pode usar o cuse Dispositivo de caractere no espaço do usuário que faz parte de fuse , disponível como um pacote na maioria dos sistemas. Um exemplo de "driver" é cuse.c . Quando você compila e executa este exemplo como:
sudo ./cuse -f --name=mydevice
cria /dev/mydevice
e recebe todas as chamadas de abertura, fechamento, leitura, gravação e ioctl.
Para "desmontar" o dispositivo (na terminologia do fusível), apenas mate o processo.
O exemplo provavelmente não é distribuído, então para compilar, baixar (ou clonar) o zip , mude para libfuse/example
directory, e compile como mostrado no arquivo C:
gcc -Wall cuse.c $(pkg-config fuse --cflags --libs) -o cuse -I.
Talvez seja necessário instalar um pacote fuse-devel
ou semelhante para que isso funcione. Se você precisar implementar mais ioctls, confira este link fornecido como um comentário para a resposta deste pergunta do stackexchange .
As alternativas mais simples a serem consideradas são pty pseudo-tty, ou tty0tty que é um módulo do kernel que une duas portas seriais.