我正在尝试从 ipmi-sensors 的输出中获取一些信息,例如 CPU_TEMP、CPU_FAN ......并保存这些值以供另一个 API 使用。守护进程将从远程发送命令以收集所有主机的硬件状态。
我正在跟踪 ipmi-sensors.c 的代码和相关文件,例如 ipmi-sensors-simple-output.c 和 ipmi-sensors-detail-output.c。我发现 ipmi-sensors 默认输出到标准输出。在main()中,ipmi-sensorsipmi_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 在 FreeIPMI 中有任何 API 调用来执行ipmi-sensors
任务吗?或者我是否需要使用fork
and将标准输出重定向到流或文件dup2
?还是我需要重写所有部分ipmi-sensors
?
谢谢你的帮助。