可以使用ofstream对象作为backtrace_symbols_fd()的第三个参数吗?
Can we use ofstream object as a third argument in backtrace_symbols_fd()?
我必须调用backtrace_symbols_fd()
函数,但该函数的第三个参数是文件描述符。那么我可以将第三个参数作为ofstream对象传递吗?
我正在输入以下代码:
ofstream myfile;
myfile.open ("example.txt");
size_t size = backtrace(aray, 5000);
backtrace_symbols_fd(aray, 5000, myfile);
但是用上面的函数调用我得到以下错误:
cannot convert 'std::ofstream' to 'int' for argument '3' to
'void backtrace_symbols_fd(void* const*, int, int)'
正如您所发现的,不可能通过ofstream
。
只需使用open(2)
函数获取文件描述符
这里有一个使用shared_ptr
的疯狂的小想法:
#include <memory>
#include <cstdio>
std::shared_ptr<std::FILE> make_file(const char * filename, const char * flags)
{
return std::shared_ptr<std::FILE>(std::fopen(filename, flags), std::fclose);
}
int main()
{
auto fp = make_file("hello.txt", "wb");
int fd = fileno(fp.get());
//...
backtrace_symbols_fd(aray, 5000, fd);
}
相关文章:
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 重载运算符 new 和运算符 delete 带有三个参数
- 三个参数函数模板令人困惑的示例
- 五个中三个最大参数的平均值,不使用排序算法或向量/数组
- C 理解`emove_if()`的第三个参数
- 如何使用三个参数化构造函数的rand()函数初始化对象的数组
- SetPixelFormat() 中的第三个参数对于 OpenGL 上下文创建有什么意义?
- find_if中的模板比较器作为第三个参数
- count_if使用我自己的类实现第三个参数
- 排序函数的第三个参数如何工作
- 在C++标准中,当我同时使用 list.begin() 作为 list.splice() 的第一个和第三个参数时,为什么会发生无限循环
- 接受子引用作为参数的父函数(或三个相互依赖类的冒险)
- 具有三个参数的C 递归二进制搜索
- 函数,它接受三个参数:指向双数组的指针、指向最小值的指针和指向最大值元素的指针
- C++ count_if对象中的第三个参数
- 调用接受三个参数的函数出现问题,其中一个是 int const
- 第三个“SetWindowSubclass”参数中的“uIdSubclass”是什么?
- 我们如何确保传递的 2 个参数被视为第一个和第三个,而第二个 AD 第四个被视为默认值
- 空白或不执行任何操作的三元运算符的第二个或第三个参数
- fcntl() 中的第三个参数是什么