我正在为自定义脚本语言编写一个 linux shell,我想在用户为单个语句输入的每个后续行之前打印一个“...”,第一行打印一个“>>>” ,然后等待输入。下面是一个例子:
>>> void f() {
... "this is a test"
... }
>>>
我正在使用 阅读该行fgets
,在我完全阅读后,我打印“...”,然后使用另一个调用重复fgets
. 这适用于中等速度的交互式输入。但是如果我将包含换行符的代码粘贴到终端中,我得到的是以下内容
>>> void f() {
"this is a test"
}
... ... >>>
“...”的打印太晚了,即使我fflush
在将它们打印到stdout
. 有谁知道是否有什么特别的事情要做来完成这项工作?