重新打开后,将文件写入标准输出失败
WriteFile to stdout fails after freopen
我写了以下代码:
int fd = _dup(fileno(stdout));
FILE* tmp = freopen("tmp","w+",stdout);
HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
if (out == INVALID_HANDLE_VALUE){
//error
}
else if (out == NULL) {
//error
}
else {
WriteFile(out, "num", sizeof("num"), NULL, NULL);
}
在最后一行我得到一个断言" Unhandled exception...:Access violation writing location 0x000000
"可能是什么问题及其解决方法?
谢谢。
P.S:由于项目的限制,我无法使用freopen。
WriteFile 的最后两个参数中只有一个可以为 NULL,另一个必须是有效的指针。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365747.aspx
在您的情况下,您可能希望使用 lpNumberOfBytesWrite。
DWORD written;
WriteFile(out, "num", sizeof("num"), &written, NULL);
相关文章:
- 捕获标准输出以压缩并使用 CTRL-C 中断会给出损坏的 zip 文件
- 使用提升过程获取 shell 命令的标准输出
- 将标准输出重定向到ostream
- 如何在C++中执行命令并获取命令的返回代码标准输出和标准
- 在程序执行期间从标准输出重定向到自定义流
- 标准输出C++意外行为
- 防止 qDebug() 写入标准输出
- C++ - <<运算符重载,链表 - 地址而不是标准输出
- 有没有办法知道C++中将打印到标准输出的大小?
- 最后推迟标准输出
- 得到~对标准输出没有回应~在黑客排名问题上
- Win32 GUI C(++) 应用将标准输出和标准输出重定向到磁盘上的同一文件
- 在标准输出中执行打印会导致数组中随机分配值
- 捕获远程进程子进程的标准输出
- 使用 QProcess 读取标准输出
- 如何将值发送到标准输出流并在另一个程序中访问这些值
- 无法使用创建进程重定向标准输出
- HackerRank说~对标准输出没有回应~.C++
- 重定向标准输出时调用 dup2 失败
- 重新打开后,将文件写入标准输出失败