Disparando leituras de zero bytes em FIFO / pty

2

Eu gostaria de saber como emular o comportamento ICANON de ^ D: isto é, disparar uma leitura imediata, mesmo com zero bytes, no programa na outra extremidade de um FIFO ou PTY ou soquete ou algo assim. Em particular, eu tenho um programa cuja especificação é que ele lê um script no stdin até que ele receba uma leitura de zero bytes, então lê a entrada para alimentar o script, e eu gostaria de testar automaticamente esta funcionalidade.

Simplesmente escrever para um FIFO não resulta na coisa certa acontecendo, é claro, já que não há leitura de zero bytes. Ajuda?

Obrigado!

    
por nwf 03.04.2015 / 12:47

2 respostas

2

Até onde eu sei, esse comportamento é exclusivo dos dispositivos de terminal, e é isso que você precisa usar.

Use uma pseudo-tty cujo lado escravo está no modo ICANON , e escreva Ctl-d ( '' ) para o lado mestre.

    
por 03.04.2015 / 22:22
1

E sobre:

echo -n '' > /path/to/the/fifo

echo -n não produz novas linhas e '' é uma string vazia. Então isso deve resultar em nada (0 bytes) sendo escrito no fifo.

Você pode reduzir esse echo para literalmente nada:

> /path/to/the/fifo

(se você tiver cuidado para não entendê-lo como um outro resultado)

    
por 03.04.2015 / 12:55

Tags