gpt4 book ai didi

c++ - 如何读取 C++ 中系统调用失败时显示的失败日志消息?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:31:01 26 4
gpt4 key购买 nike

我有一个调用测试的 C++ 代码。我正在做一个系统调用来执行这个测试。当此测试失败时,它将显示类似这样的内容“错误:无法发现以下组件类型的一个或多个设备:”

我有一个在 Linux redhat 上运行的 C++ 代码,它能够检测系统调用是通过还是失败。但它无法捕获错误消息(错误:无法发现以下组件类型的一个或多个设备:)并将其附加到日志文件或打印出来。

有人可以告诉我如何捕获错误消息(错误:无法发现以下组件类型的一个或多个设备:)?PS:我是一名实习生,任何帮助都会非常好。

#include<iostream.h>
int main ()
{
int i;
if (system(NULL))
puts ("Ok");
else
exit (1);

i=system("hpsp --discover -verbose --user Admin --oapasswd password");

printf ("The value returned was: %d.\n",i);

return false;
}

最佳答案

而不是使用 system() 使用 popen() .这将打开一个捕获测试程序标准输出的管道,以便您的程序可以通过管道读取它。

示例已编辑:

#define _BSD_SOURCE 1
#define BUFFSIZE 400

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
char *cmd = "hpsp --discover -verbose --user Admin --oapasswd password";

char buf[BUFFSIZE];
char* searchResult;
int testPassed = 0;

FILE *ptr;

if ((ptr = popen(cmd, "r")) != NULL)
while (fgets(buf, BUFFSIZE, ptr) != NULL)
{
if ((searchResult = strstr(buf, "The test passed")) != NULL )
{
testPassed = 1;
break;
}
}

if (testPassed)
printf("yea!!\n");
else
printf("boo!!\n");

pclose(ptr);

return 0;
}

关于c++ - 如何读取 C++ 中系统调用失败时显示的失败日志消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9287253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com