如何使用FreeIPMI API阻止ipmi-sensors输出到stdout

时间:2017-05-16 09:44:48

标签: c ipmi

我正在尝试从ipmi-sensors的输出中获取一些信息,例如CPU_TEMP,CPU_FAN,...并保存另一个API的值以供使用。守护进程将从远程发送命令以收集所有主机'硬件状态。

我跟踪ipmi-sensors.c的代码和相关文件,例如ipmi-sensors-simple-output.c和ipmi-sensors-detail-output.c。我发现ipmi-sensors默认输出为stdout。在main()中,ipmi-sensors首先调用ipmi_sensors_argp_parse

ipmi_sensors_argp_parse (/*argc, argv, */&cmd_args);

我想从API获取ipmi-sensors数据,我不使用argcargv,我标记argcargv并为此目的修改函数调用的内容。

然后main()调用另一个函数pstdout_setup来设置输出的stdout

if ((hosts_count = pstdout_setup (&(prog_data.args->common_args.hostname),
                &(prog_data.args->common_args))) < 0)
    return (EXIT_FAILURE);

并启动它

if ((rv = pstdout_launch (prog_data.args->common_args.hostname,
                          _ipmi_sensors,
                          &prog_data)) < 0)

FreeIPMI在FreeIPMI中有任何API调用来执行ipmi-sensors的任务吗?或者我是否需要使用forkdup2将标准输出重定向到流或文件?或者我是否需要重写ipmi-sensors的所有部分?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

FreeIPMI维护者在这里。我相信您正在寻找的API是&#34; libipmimonitoring&#34;,它大约占ipmi-sensors的90%。