She*_*rif 5 php ncurses php-ncurses
使用php ncurses,我很想知道具体是什么ncurses_def_shell_mode()和ncurses_def_prog_mode()功能.他们没有在PHP手册中记录,我所做的一点点man ncurses没有帮助.
如果我在调用之前调用ncurses_def_shell_mode()然后重置,根据扩展名的源应该调用ncurses,终端光标仍然以某种方式丢失.ncurses_reset_shell_mode()ncurses_end()endwin
<?php
ncurses_init(); // start ncurses window
ncurses_def_shell_mode();
sleep(2); // print some stuff here
ncurses_reset_shell_mode();
ncurses_end(); // clean up and get out
exit;
?>
Run Code Online (Sandbox Code Playgroud)
我想有和没有,ncurses_def_shell_mode()和ncurses_def_prog_mode(),但不知何故,窗口不退出正确重置尽管正确调用复位.我误解了这些功能应该如何工作?我能够挖掘出非常少的信息,以便更深入地了解它们的正确用法.
我知道ncurses可能过时,但这使得知道如何正确使用它变得更加困难.
这里预期的行为是在调用之后ncurses_reset_shell_mode()或者ncurses_reset_prog_mode()shell或prog窗口应该恢复到之前保存的状态.
实际的行为似乎是shell在退出时是一个破碎的状态.光标不闪烁,键入不会显示终端中的任何内容.但是,终端正在正确接收输入,因为键入命令并按下输入仍然有效.
php ncurses是ncurses的包装器。您所询问的功能在 ncurses 手册页中有更详细的记录,例如curs_kernel(3x)。这就是说这些函数保存/恢复终端模式。这些对应于 termios(终端 I/O 设置)中的curses 设置。
终端 I/O 设置不包括闪烁光标(这是使用特定于终端的转义序列完成的)。对于 echo,手册页可以提供帮助:
和 例程将当前终端模式保存为“程序”(在curses 中)或
def_prog_mode“def_shell_modeshell”(不在curses 中)状态,以供 和 例程reset_prog_mode使用reset_shell_mode。这是由newterm()分配的每个屏幕上下文完成的。
当 ncurses 启动时,例如initscr( ncurses_init()),它会保存 shell 模式并初始化 prog 模式,基本上将终端置于原始模式以更好地控制它。
您致电ncurses_def_shell_mode();
ncurses_reset_shell_mode();时,进一步阅读:
ncurses_init()定义。