将 ncurses 与 execvp 结合使用

问题描述

我正在用 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 (将#修改为@)