我正在尝试从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数据,我不使用
argc
,argv
,而是标记argc
,argv
并为此修改函数调用的内容。然后main()调用另一个func
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
和dup2
将标准输出重定向到流或文件?还是我需要重写ipmi-sensors
的所有部分?谢谢你的帮助。
最佳答案
FreeIPMI维护者在这里。我相信您正在寻找的API是“ libipmimonitoring”,它可以完成ipmi-sensors的90%。
关于c - 如何使用FreeIPMI API防止IPMI传感器输出到标准输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43997929/