gpt4 book ai didi

c - 是否每个进程都将其 stdin stdout stderr 定义为键盘、终端等?

转载 作者:太空宇宙 更新时间:2023-11-04 06:08:24 26 4
gpt4 key购买 nike

是否每个进程都有 stdinstdoutstderr 关联到键盘和终端?

我有一个小程序。我想将键盘输入替换为名为 new.txt 的文件。我该怎么做?

FILE *file1
fopen("new.txt", "r")
close(0); // close the stdio
dup2(file1, 0);

这行得通吗?现在我的 stdio 被重定向到 FILE?

最佳答案

不,不是每个 进程。但是在为您提供命令行窗口以供输入的操作系统上,从该命令行启动的程序会将 stdin 连接到键盘,而 stdout 和 stderr 都将连接到终端。

如果一个程序启动另一个程序,那么通常第二个程序的标准流会以某种方式连接到第一个程序;例如,第一个程序可能有一个开放的描述符,它可以通过它发送文本并假装它是第二个进程的“键盘”。当然,详细信息因操作系统而异。

关于c - 是否每个进程都将其 stdin stdout stderr 定义为键盘、终端等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5320260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com