c/c++语言开发共享使用重定向运算符后检索stdin <

对于编程任务,我们有以下要求:

经过大量的研究,我无法找到一种方法来检索“旧的”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

      (0)
      上一篇 2021年2月4日
      下一篇 2021年2月4日

      精彩推荐