c之用C写shell,如何区分交互模式和批处理模式
sky-heaven
阅读:58
2025-04-02 23:11:03
评论:0
我正在用 C 编写一个同时具有交互和批处理模式的 shell。我想在交互模式下打印提示,而不要在批处理模式下显示它。
即
bash> ./myshell
应该显示提示,并且
bash> ./myshell < sample.txt
应该只显示“sample.txt”中命令的输出,而不是提示。
由于父进程(即 bash)进行了 stdin 重定向,我不确定 myshell 如何判断输入流是来自 stdin 还是来自文件?
非常感谢您的帮助。
请您参考如下方法:
isatty(3)
可用于确定给定的文件描述符是否为 tty . Shell 将使用它来确定期望的输入类型。
例如:
if (isatty(STDIN_FILENO)) {
// Interactive shell
}
else {
// Redirected stdin
}
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。