问题描述
我正在用 C 为一个班级编写一个 shell 项目,我决定在 shell 中实现箭头键命令历史记录作为一个额外的功能。调用 initscr()
后,一切都正确打印出来,但是当我在 fork 内部调用 execvp()
来执行 shell 命令并在屏幕上显示结果时,事情变得有点古怪。我阅读了 this post 并了解到为了避免 execvp 输出中的缩进,我可以使用 reset_shell_mode()
后跟 reset_prog_mode()
。执行此操作时,execvp 命令打印正常,但如果 execvp 命令正常工作,则 reset_prog_mode()
似乎无法正常工作。下面是一些演示问题区域的代码。
pid = fork();
if (pid == 0) {
reset_shell_mode();
execvp(command,args);
reset_prog_mode();
refresh();
printw("error"); // prints correctly
}
else {
usleep(1000);
waitpid(pid,&status,0); // status is defined,just not in this snippet
reset_prog_mode();
refresh();
printw("completed"); // never prints - printw is scuffed from this point on. getstr() works tho.
}
我几乎可以肯定,我的问题与 fork 以及成功 execvp 完成后我放置 reset_prog_mode()
的位置有关,但我不知道如何解决。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)