如何解决将文件描述符从 `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 举报,一经查实,本站将立刻删除。