C 写串行,重定向到文件,终止

C write serial, redirect to file, terminate

我通过 AVR 微控制器上的 C 代码将文本写入 USART/USB 到 PC,然后我将文本重定向到一个文件

(stty raw; cat > test.txt) < /dev/ttyUSB0

命令一直阻塞,直到我使用 CTRL+C 终止它。 我需要的是能够以某种方式从 C 代码中终止它。

我已经尝试发送 EOF 和 EOT,并禁用控制器的 USART 发送器,但所有这些都不会终止进程。

即使从代码中发送一些自定义字符序列以终止对文件的重定向也对我有用,但我想我需要另一个命令,这不是问这个问题的错误地方..?

在原始模式下读取串行端口时,EOF(和其他)字符未作为特殊控制字符处理。这就是原始或非规范模式的全部目的:允许所有字符 transmitted/received 不受干扰。
您需要使用规范(文本)模式(以便行规程处理控制字符)。

尝试 stty sane 而不是 stty raw,这会启用规范模式。