微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将文件描述符从 `open_memstream` 传递给 `dup2`

如何解决将文件描述符从 `open_memstream` 传递给 `dup2`

我正在尝试将 static void IsBinaryOrNot(int number) { boolean isBinary = true; int copy = number; while (copy != 0) { int temp = copy%10; if(temp > 1) { isBinary = false; break; } else { copy = copy/10; } } if (isBinary) { Console.WriteLine(number+" is a binary number"); } else { Console.WriteLine(number+" is not a binary number"); } } ed 函数输出重定向到缓冲区,所以我想尝试使用 exec() 来处理动态缓冲

我把它放在一起来测试:

open_memstream

但是运行它给我在 #include <stdio.h> #include <unistd.h> int main() { char* buffer; size_t buffer_len; FILE* stream = open_memstream(&buffer,&buffer_len); if(!stream) perror("Something went wrong with `open_memstream`!"); fflush(stream); puts("Start"); if(dup2(fileno(stream),STDOUT_FILENO) == -1) perror("Something went wrong!"); puts("Internal"); fclose(stream); FILE* f = fopen("out.txt","w+"); fputs(buffer,f); fclose(f); } 上的错误 bad file descriptor,这不应该是这种情况,因为 dup2 没有返回它应该做的 open_memstream错误

NULL 的实现是否存在某些使其无法操作其底层描述符的问题?还是我只是愚蠢并且使用了错误函数

提前为任何帮助干杯,如果这不能用 open_memstream 来处理,有没有办法用 open_memstream 来处理它而不是直接使用 fds ?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。