我正在创建一个NASM汇编代码,用于读取stdin中文件中存在的2d数字数组 我正在运行这样的可执行文件 - > ./ abc< input.txt 。
然后我将在终端上显示读取的2d数组然后我想得到箭头键的密钥代码(正常出现在终端中作为特殊字符)我为它编写代码但它不是工作。 (我确实在termios设置中回应了)
虽然当我把文件名作为参数时它正在工作&读取而不是从stdin读取,但使用fopen和正确的fd。
./ abc abc.txt
在这种情况下,在显示读取的2d数组后,我能够在程序中获得箭头键代码,但在早期的情况下不能。
请帮我解决这个问题。
答案 0 :(得分:0)
通过使用输入重定向,您可以从终端断开stdin,而是将其连接到shell正在读取文件的管道。
您可以使用cat input.txt - | ./abc
,但是您必须按 Enter 来刷新行缓冲区,并使cat
将当前行传输到您的程序中。
我建议不要乱用stdin,只是将输入文件作为参数,就像你之前已经做过的那样。