更改 argp 上的默认输出流

Change default output stream on argp

默认情况下 argp 使用标准输出。

在argp-parse.c源码中可以看到在init函数中将值初始化为stdout:

parser->state.out_stream = stdout;

结构argp_state是内部使用的argp,存储值out_stream

我想更改默认行为并将流重定向到另一个文件描述符。

您可以做的是重定向 stdout 并稍后恢复:

int orig_stdout = dup(STDOUT_FILENO);
extern int my_other_file_descriptor;
dup2(my_other_file_descriptor, STDOUT_FILENO);

// parse args

dup2(orig_stdout, STDOUT_FILENO);