【发布时间】:2017-03-02 18:42:21
【问题描述】:
我正在创建自己的 shell,我想在任何 Linux 发行版上的任何用户按 ctrl+c 时禁用 ^C。
我不需要处理信号 SIGINT,我已经这样做了,因为不要在 ctrl+c 上停止程序。我只想知道如何隐藏这两个字符^C。
在我的程序开始时是否有任何函数可以调用或设置环境变量?
编辑
int a = fork();
if (!a) {
char *cmd[] = {"/bin/stty", 0 };
char *cmd_args[] = {" ", "-echoctl", 0};
execve(cmd[0], cmd_args, env);
}
试过这个。它删除了我在 ctrl-c 上的 ^C 但它仍然显示一个方形字符,就像无法显示该字符一样。好像是EOT(003 ascii)
【问题讨论】:
-
您需要在终端上禁用回显(但这也意味着您需要自己处理来自输入的回显)。
-
怎么样,我不确定
-
我想我可以用 execv 和 stty -echoctl
-
@Olaf 是的,有办法。
-
execve("stty", cmd_args, env);使用 cmd_args (-echoctl) 不起作用,知道吗?