Pergunta

Atualmente estou escrevendo alguns testes CppUnit para um programa que testa uma porta de comunicação hardware (sim, eu estou escrevendo testes de unidade para um aplicativo testador ;-)). Uma das classes que estou testando é basicamente um invólucro em torno descritor de arquivo do dispositivo; I fazer chamadas read() e write() sobre o descritor de arquivo. Existe um arquivo de dispositivo / driver no Linux, onde se write() a ele, quando você read() com isso você vai ler de volta o que você escreveu (como um dispositivo de fila FIFO)? Se eu tivesse esse arquivo de dispositivo, que seria muito simples se estatelar que no lugar do arquivo de dispositivo real na minha capa e tornaria mais fácil para emular cenários "auto-retorno" que possam ocorrer no hardware do mundo real.


Essencialmente, o que eu estou procurando seria uma espécie de dispositivo "/dev/echo" hipotética.

Ex: O dispositivo se comportaria como se segue:

open("/dev/echo", O_RDRW);

write(fdEcho, 123, sizeof(int));
write(fdEcho, 456, sizeof(int));
write(fdEcho, 789, sizeof(int));

read(fdEcho, iData,  sizeof(int);  // returns 123
read(fdEcho, iData2, sizeof(int);  // returns 456
read(fdEcho, iData3, sizeof(int);  // returns 789
Foi útil?

Solução

Por que você não usar um tubo de UNIX no sistema de arquivos?

mkfifo /dev/test
echo test > /dev/test

em um segundo terminal:

cat /dev/test

Em seguida, o primeiro vai desbloquear eo segundo irá mostrar o texto!

Outras dicas

Você pode fazer um com

mknod /dev/echo p

O primeiro argumento é o nome do arquivo (que pode ser qualquer nome de arquivo, não tem que estar em /dev), segundo argumento é p para "pipe".

Referência: http: //www.unix .com / Unix manequins de-perguntas-respostas / 22205-unix-pipe.html

Você também pode olhar para a função C pipe(): http: //www.manpagez. com / homem / 2 / tubo /

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top