我正在尝试将一些错误警报编码到我公司的一个监控程序中,但是对于 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 服务器上运行和执行。