Как отключить интерактивный режим модифицированного интерпретатора tclsh?

Запустите команду tclsh без tcl-файла, интерпретатор перейдет в интерактивный режим.

Могу ли я просто отключить эту функцию, изменив исходный код tclsh?


person zhangailin    schedule 19.06.2013    source источник


Ответы (1)


Я не могу представить, зачем вам это нужно, учитывая, что предоставление любого файла сценария отключит интерактивный режим. Предоставленный вами сценарий будет иметь полный доступ к переданным дополнительным аргументам (список в глобальной переменной argv) и стандартным каналам ввода-вывода (stdin, stdout и stderr). Это может exit когда это будет сделано. Буквально все, что вы хотите, может быть сделано в этот момент; вам просто нужно написать сценарий, чтобы сделать это.

Если вы включаете Tcl в свою программу, поведение tclsh реализуется в функции C Tcl_Main. Если вы никогда не вызываете это — вместо этого просто используете Tcl_FindExecutable, Tcl_CreateInterp и Tcl_Eval/Tcl_EvalFile — вы никогда не получите такого интерактивного поведения. Хотя теоретически вы можете изменить сам исходный код Tcl, чтобы он делал то, что вы хотите — он полностью с открытым исходным кодом — зачем вам беспокоиться, если вы можете просто не вызывать этот код в первую очередь?

person Donal Fellows    schedule 10.06.2014