【发布时间】:2018-07-05 15:14:50
【问题描述】:
运行一个期望终端输入的程序,我可以通过 Ctrl+D“关闭”标准输入。之后有没有办法重新打开标准输入?
【问题讨论】:
-
你可以 fopen("/dev/tty", "r")
-
它不是'重新打开标准输入',但我相信你真正想要的。
-
我发现一个简单的
clearerr(stdin)在这种情况下通常就足够了。 -
或
freopen("/dev/tty", "r", stdin) -
@PSkocik:已编辑 nitpick:改为使用
char buf[32]; for (;;) printf("read=%zd\n", read(0, buf, sizeof buf));。 (我只是习惯于编写STDIN_FILENO示例代码,我什至没有注意到我更改了那部分。我的意思是使用%zd代替ssize_t。)