C++ 如何检测函数是否执行IO操作?
我是否可以寻找任何指标来了解函数是否执行I/O操作? 主要的目标平台是Linux(Ubuntu或它的一些变体) 最明显的方法是拥有此类函数/库的目录,并检查其中是否存在该函数。然而,我想知道如何在第一时间建立这样一个目录 例如,C++ 如何检测函数是否执行IO操作?,c++,unix,io,C++,Unix,Io,我是否可以寻找任何指标来了解函数是否执行I/O操作? 主要的目标平台是Linux(Ubuntu或它的一些变体) 最明显的方法是拥有此类函数/库的目录,并检查其中是否存在该函数。然而,我想知道如何在第一时间建立这样一个目录 例如,printf最终写入标准输出,因此它将计数。从USB端口读取数据的函数也将计算在内。但是他们有什么共同点吗,即使我不得不挖掘到最底层 这可能与问题无关,但在理想情况下,我可以利用这些函数的某些模式,以便使用工具自动识别它们。我不确定要查找什么低级指令。当然, < P>标
printf
最终写入标准输出,因此它将计数。从USB端口读取数据的函数也将计算在内。但是他们有什么共同点吗,即使我不得不挖掘到最底层
这可能与问题无关,但在理想情况下,我可以利用这些函数的某些模式,以便使用工具自动识别它们。我不确定要查找什么低级指令。当然, < P>标准C++当然没有USB读的功能,但我们暂时忽略这个细节。 <函数>函数“I/O”的问题可以通过标准库C++来近似,询问库函数有哪些。这直接指向一组,当然现在还有
(从C++引用复制:)
转发输入/输出库中所有类的声明
std::ios_基类、std::basic_ios类模板和几个typedef
std::basic_istream类模板和几个typedef
std::basic_ostream、std::basic_iostream类模板和几个typedef
几个标准流对象
std::basic_fstream、std::basic_ifstream、std::basic_流类模板和几个typedef
std::basic_stringstream、std::basic_istringstream、std::basic_ostringstream类模板和几个typedef
(自C++20以来)std::basic_osyncstream、std::basic_syncbuf和typedefs
(已弃用)std::stream,std::istrstream,std::ostrstream
用于控制输入和输出格式的助手函数
std::basic_streambuf类模板
C型输入输出函数
> 标准C++当然没有从USB读取的功能,但是我们暂时忽略这个细节。
<函数>函数“I/O”的问题可以通过标准库C++来近似,询问库函数有哪些。这直接指向一组,当然现在还有
(从C++引用复制:)
转发输入/输出库中所有类的声明
std::ios_基类、std::basic_ios类模板和几个typedef
std::basic_istream类模板和几个typedef
std::basic_ostream、std::basic_iostream类模板和几个typedef
几个标准流对象
std::basic_fstream、std::basic_ifstream、std::basic_流类模板和几个typedef
std::basic_stringstream、std::basic_istringstream、std::basic_ostringstream类模板和几个typedef
(自C++20以来)std::basic_osyncstream、std::basic_syncbuf和typedefs
(已弃用)std::stream,std::istrstream,std::ostrstream
用于控制输入和输出格式的助手函数
std::basic_streambuf类模板
C型输入输出函数
嗯,我认为您应该分析asm中的一些系统调用,但究竟是什么是一个困难的问题。这显然取决于你的操作系统。理想情况下,您应该为每个函数创建一个调用树,并找到包含您正在查找的系统调用的分支。我认为任何答案都将高度依赖于您的目标平台。你能说明你在为什么样的环境而建吗?Windows,UNIX,智能手机,嵌入式设备……?理想地,任何IO,但我会优先考虑USB接口在这种情况下。听起来你的问题是不相关的C++本身,但一些OS特定的接口/功能。@ TimRANDAR最好是UNIX。我在问题中澄清了这一点。嗯,我认为你们应该分析asm的一些系统调用,但到底什么是困难的问题。这显然取决于你的操作系统。理想情况下,您应该为每个函数创建一个调用树,并找到包含您正在查找的系统调用的分支。我认为任何答案都将高度依赖于您的目标平台。你能说明你在为什么样的环境而建吗?Windows,UNIX,智能手机,嵌入式设备……?理想地,任何IO,但我会优先考虑USB接口在这种情况下。听起来你的问题是不相关的C++本身,但一些OS特定的接口/功能。@ TimRANDAR最好是UNIX。我在问题中澄清了这一点。是的,我知道,ios\u base::ios\u base
不太可能进行任何实际的I/O,或者“std::istringstream::istringstream”。当然,任何内存的使用都可以触发到磁盘的交换,包括堆栈内存。所以这个列表只是官方的,并不一定有意义。我意识到我的问题可能与C++没有任何关系,在下面,你的答案可能是我能得到的最接近的东西。谢谢你的指点,这些可能有助于指导未来的搜索。是的,我知道,ios\u base::ios\u base
不太可能进行任何实际的I/O,或者“std::istringstream::istringstream”。当然,任何内存的使用都可以触发到磁盘的交换,包括堆栈内存。所以这个列表只是官方的,并不一定有意义。我意识到我的问题可能与C++没有任何关系,在下面,你的答案可能是我能得到的最接近的东西。谢谢你的指点,这些可能有助于指导未来的搜索。
<iosfwd> forward declarations of all classes in the input/output library
<ios> std::ios_base class, std::basic_ios class template and several typedefs
<istream> std::basic_istream class template and several typedefs
<ostream> std::basic_ostream, std::basic_iostream class templates and several typedefs
<iostream> several standard stream objects
<fstream> std::basic_fstream, std::basic_ifstream, std::basic_ofstream class templates and several typedefs
<sstream> std::basic_stringstream, std::basic_istringstream, std::basic_ostringstream class templates and several typedefs
<syncstream> (since C++20) std::basic_osyncstream, std::basic_syncbuf, and typedefs
<strstream> (deprecated) std::strstream, std::istrstream, std::ostrstream
<iomanip> Helper functions to control the format of input and output
<streambuf> std::basic_streambuf class template
<cstdio> C-style input-output functions