如何获取不输出到任何地方的 C 文件描述符

问题描述 投票:0回答:1

我有一个遗留程序,如果给定 -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* 指针,使它们不做任何事情并且不抛出异常吗?最好是便携式的。

c file-io file-descriptor
1个回答
0
投票

路径中有一个文件

/dev/null
.

theprogram -o /dev/null

您也可以使用 shell 将程序的标准输出重定向到

/dev/null
,通常:

theprogram >/dev/null
© www.soinside.com 2019 - 2024. All rights reserved.