我知道freopen
的正确用法是忽略给定post的分配:freopen("/dev/tty","r", stdin);
我的问题是,我还应该检查返回值吗?我要重新打开标准输入并关闭它。例如:
if(freopen("/dev/tty","r", stdin)==NULL) {
fprintf(stderr, "Unable to redirect stdin from file\n");
exit(1);
}
最佳答案
这对于freopen的documentation说:
因此,可以的,您可以针对NULL检查返回值以查看是否存在错误,或者检查errno。
关于您的评论,文档说:
基于“独立于该流是否成功关闭”,如果发生错误,原始流似乎可以保持打开状态,或者处于 undefined 状态。无论如何,这不会产生任何实际的区别,因为无论如何freopen失败后,您都不希望使用该流。