gpt4 book ai didi

c - 在 C 中使用系统返回值来标记错误

转载 作者:太空宇宙 更新时间:2023-11-03 23:30:16 26 4
gpt4 key购买 nike

我正在尝试将一些错误警报编码到我公司的一个监控程序中,但我不太幸运地从 C 中的 system() 命令返回值。代码调用 scp 事务来拉取另一个服务器上的文件......如果系统关闭或连接失败,我需要它来标记错误。

我尝试用“echo $?”确定错误返回值是什么看起来 0 是成功的返回,然后 1 是其他任何东西,但即使将其编码到应用程序中,它也不会选择失败的尝试。我刚刚尝试从命令行获取返回值,但我不知道该值是否实际上是应用程序执行期间返回的值。

当 system() 命令返回失败时,底线很重要,所以我不确定是否有更好的解决方案。

谢谢大家。

编辑:这是我用来识别错误的代码摘录:

if ( system(cmd) != 0 ); 
{
sftpCrash = TRUE;
printf("FTP crash detected.")
return;
}

然后 int sftpCrash 返回给调用函数,并像这样执行:

if ( sftpCrash == TRUE)
{
Node->color = RED; //Posts an error to our monitoring application
sprintf(reason, "Failure on SFTP connection to %s. Please check server status.",
getenv("HOSTNAME"));
printf(("SFTP crashed. Should post error alert."));
}

这一切都在 UNIX 服务器上运行和执行。

最佳答案

system()的返回值作为返回状态的一部分传递。使用 WEXITSTATUS(status)检索它:

int status = system("my command");
if (status != -1) { // -1 means an error with the call itself
int ret = WEXITSTATUS(status);
...
}

关于c - 在 C 中使用系统返回值来标记错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17322382/

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