Я пишу оболочку linux для пользовательского языка сценариев и хочу напечатать «...» перед каждой последующей строкой, которую пользователь вводит для отдельного оператора, причем первая строка имеет «>> > "распечатано, то жду ввода. Ниже приведен пример:
>>> void f() {
... "this is a test"
... }
>>>
Я читаю строку с fgets
, и после того, как я полностью прочитал ее, я печатаю «...» и повторяю, используя другой вызов fgets
. Это отлично работает для умеренно быстрого интерактивного ввода. Но если я вставлю код, содержащий символы новой строки, в терминал, я получу следующее
>>> void f() {
"this is a test"
}
... ... >>>
«...» печатаются слишком поздно, хотя я посылаю вызов fflush
после того, как напечатаю их на stdout
. Кто-нибудь знает, есть ли что-то особенное, чтобы сделать эту работу?