【发布时间】:2017-05-16 09:44:47
【问题描述】:
我正在尝试从 ipmi-sensors 的输出中获取一些信息,例如 CPU_TEMP、CPU_FAN 等,并保存这些值以供另一个 API 使用。守护进程将从远程发送命令以收集所有主机的硬件状态。
我正在跟踪 ipmi-sensors.c 的代码和相关文件,例如 ipmi-sensors-simple-output.c 和 ipmi-sensors-detail-output.c。我发现 ipmi-sensors 默认输出到标准输出。在main()中,ipmi-sensors首先调用ipmi_sensors_argp_parse,
ipmi_sensors_argp_parse (/*argc, argv, */&cmd_args);
我想从API获取ipmi-sensors数据,我不使用argc,argv,我标记出argc,argv并为此修改函数调用的内容.
然后 main() 调用另一个函数pstdout_setup 来设置输出的标准输出
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 中是否有任何 API 调用来执行ipmi-sensors 的任务?或者我是否需要使用fork 和dup2 将标准输出重定向到流或文件?还是我需要重写ipmi-sensors的全部部分?
感谢您的帮助。
【问题讨论】: