对于编程任务,我们有以下要求:
经过大量的研究,我无法找到一种方法来检索“旧的”stdin以完成第(3)部分。 有人知道这是甚至可能吗?
技术上,第(3)部分是奖励部分的一部分,教师可能没有实现自己(这是非常冗长的),所以这可能是不可能的,这是他的疏忽。 但是,我当然不想跳到这个结论。
在linux上,我会打开控制终端/ dev / tty。
哪个OS? 在Linux上,实现此目的的通常技巧是检查stderr是否仍然连接到tty:
if (isatty(2))
如果是这样,打开一个新的读取文件描述符到该终端:
new_stdin = open("/proc/self/fd/2", O_RDONLY);
然后将新文件描述符复制到stdin(关闭旧的stdin):
dup2(new_stdin, 0);
(如果stderr也被重定向,那么isatty(2)
将返回false,你将不得不放弃。)
如果您运行这样的程序:
myprog 3<&0 < filename
然后你得到文件描述符3 作为stdin
的副本设置 。 我不知道这是否符合您的任务要求,但可能值得进行实验。
以上就是c/c++开发分享使用重定向运算符后检索stdin <相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/562218.html