首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ncurses_def_shell_mode()和ncurses_def_prog_mode()到底做了什么?

ncurses_def_shell_mode()和ncurses_def_prog_mode()到底做了什么?
EN

Stack Overflow用户
提问于 2016-09-10 13:33:43
回答 1查看 185关注 0票数 6

使用php ncurses,我很想确切地了解ncurses_def_shell_mode()ncurses_def_prog_mode()函数具体做了什么。他们没有记录在PHP手册中,我在man ncurses中偶然发现的一点也没有帮助。

如果我调用ncurses_def_shell_mode(),然后在调用ncurses_end()之前用ncurses_reset_shell_mode()重置,根据扩展的源应该在ncurses中调用endwin,那么终端游标仍然会丢失。

代码语言:javascript
复制
<?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;
?>

我尝试了with和with,ncurses_def_shell_mode()ncurses_def_prog_mode(),但不知怎么的,尽管正确地调用了reset,窗口在退出时还是没有被正确地重置。我是否误解了这些功能是如何工作的?我能够挖掘很少的信息来收集更多的关于它们的正确使用的洞察力。

我知道ncurses可能是过时的,但这只会使它更难知道如何正确地使用它。

这里的预期行为是,在调用ncurses_reset_shell_mode()ncurses_reset_prog_mode()之后,shell或ncurses_reset_prog_mode()窗口应该回到以前保存的状态。

实际的行为似乎是外壳在退出时是一个破碎的状态。光标不会闪烁,键入不会显示终端中的任何内容。但是,终端正在正确地接收输入,因为输入命令和按回车仍然有效。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-10 19:12:05

php ncurses诅咒的包装器。您所询问的函数在ncurses手册页面中有更详细的记录,例如内核(3x)。也就是说,这些函数保存/恢复终端模式。它们对应于termios中的诅咒设置(终端I/O设置)。

终端I/O设置不包括闪烁光标(这是使用终端特定转义序列完成的)。对于echo,手册页可以帮助:

def_prog_modedef_shell_mode例程将当前的终端模式保存为“程序”(在诅咒中)或"shell“(不处于诅咒状态),以供reset_prog_modereset_shell_mode例程使用。这是由新学期()分配的每个屏幕上下文完成的。

当ncurses启动时,例如initscr (ncurses_init()),它保存shell模式并初始化prog模式,基本上将终端置于原始模式以更好地控制它。

你打给ncurses_def_shell_mode();的电话

  • 将prog模式保存为外壳模式,并且
  • 当使用ncurses_reset_shell_mode();“恢复”到此时,
  • 它没有效果:终端保持在原始模式,回波禁用。

进一步读:

  • PECL /[svn]/pecl/ncurses/主干
  • 函数,其中定义了ncurses_init()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39426588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档