我有一个遗留程序,如果给定 -o 选项,它会输出到标准输出或文件。
if (<-o option exists>) {
fn = fopen(file_name, "w");
} else {
fn = stdout;
}
我想将此程序更改为无处输出(最小的文件 io 开销)。 一开始,我在考虑:
if (<-o option exists>) {
fn = fopen(file_name, "w");
} else {
fn = fopen("/dev/null", "w");
}
我试图在没有任何文件的情况下简单地测量程序的计算时间。由于我不希望 GCC 只是吹走计算部分(以及它的遗留代码),我希望实际输出结果的代码路径存在,但程序可以选择 fputc、putc、printf,等等什么都没有。不幸的是,该程序似乎混合了所有 3 种打印方法,我必须做很多手术才能将其删除。
我可以为那些函数提供一个 FILE* 指针,使它们不做任何事情并且不抛出异常吗?最好是便携式的。
路径中有一个文件
/dev/null
.
theprogram -o /dev/null
您也可以使用 shell 将程序的标准输出重定向到
/dev/null
,通常:
theprogram >/dev/null