如何在Linux的Bash环境下测试需EOF触发的C程序?
正确测试依赖EOF触发的C程序(Linux环境)
针对K&R《C程序设计语言》开篇这类需要EOF触发逻辑的习题,给你几个实用的测试方法:
先输入内容再触发EOF
不要一启动程序就按Ctrl+d,先输入你要测试的内容(比如几行文本、单个字符),输入完成后再按Ctrl+d。比如测试统计字符数的程序,先敲hello\nworld,回车后按Ctrl+d,程序会先处理完输入的内容,再触发EOF退出,不会直接关闭终端。文件重定向输入
把测试内容提前写到一个文本文件里,比如test_input.txt,运行程序时用重定向让程序读取文件内容:./your_program < test_input.txt程序读完文件所有内容后会自动触发EOF,不用手动按键,还能重复用同一个测试用例。
管道传递输入
用管道直接把测试内容传给程序,单行内容可以用:echo "your test content" | ./your_program多行内容可以用here-doc语法:
cat << END | ./your_program line 1 line 2 line 3 END这样程序会读取管道里的所有内容,读完自动触发EOF。
另外补充下:空输入时按Ctrl+d会让bash直接结束当前输入流,所以程序会直接退出。只要先输入内容再触发EOF,就不会出现终端关闭的问题。
内容的提问来源于stack exchange,提问作者siphonus
相关产品推荐
相关产品推荐

