有没有库函数或者是系统调用用来改变stdin等所关联的文件描述符?

发布于 2022-10-15 05:54:09 字数 106 浏览 23 评论 0

有没有库函数或者是系统调用用来改变stdin等所关联的文件描述符啊?
fileno(stdin)的结果总是0, 能改变这个结果吗?比如让fileno(stdin)的结果为5什么的?
谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

梦里梦着梦中梦 2022-10-22 05:54:09

close(0);
open("abc.txt",RD_ONLY,0777);

这样的话stdin就是abc.txt了。

巴黎盛开的樱花 2022-10-22 05:54:09

但是fileno的结果是0啊,并不能改变fileno的结果啊!

别想她 2022-10-22 05:54:09

dup2()试一试

奶气 2022-10-22 05:54:09

dup2(old, new);
close(old);

萤火眠眠 2022-10-22 05:54:09

同样的不行啊

北恋 2022-10-22 05:54:09
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(){
  4.     stdin = fopen("hello.txt',"w");
  5.     printf("%d\n",fileno(stdin));
  6.     exit(0);
  7. }

复制代码我这样试了一下,发现可以改变stdin对应的文件描述符啊。。

虫児飞 2022-10-22 05:54:09

回复 2# liuiang
你这样仅仅是将问间描述符0赋给了这个文件,stdin也对应指向这个文件,但是stdin和文件描述符0还是相关联的啊,它俩对应同一个文件而已。。。

梦在夏天 2022-10-22 05:54:09

dup2()真不行吗

总攻大人 2022-10-22 05:54:09

dup2真的不行!好像不可以对stdin直接复制吧!它是一个常量啊!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文