如何在C中获取执行shell命令的响应结果?

时间:2015-04-28 05:01:10

标签: c linux shell ssh

更新:我尝试打印system()的返回值。如果ssh失败,它将返回65280,如果成功,则返回0.

我想从我的笔记本电脑ssh到另一台机器,我写了一个C程序,它访问该机器并触摸该机器上的文件。但有时网络不稳定或机器可能已关闭。因此,ssh将失败。我怎么知道该程序中的ssh失败了?有时ssh到该机器成功,但触摸该文件失败,如何在C程序中区分它们?我怎么知道shell命令失败是因为ssh失败了touch?我不想盯着屏幕,我希望程序自动检查。

here is my code:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int  main(int argc,const char *argv[])
{
while(1)
{
    system("ssh liulyix@localhost -p 22210 'touch script/rebooter.sh'");
    sleep(5);
}
}

2 个答案:

答案 0 :(得分:1)

阅读系统的手册页。

原型类型是

{{1}}

返回值是 -1系统由于叉子故障而无法执行命令。查看execve的手册页并查看可能引发的错误号。所有这些错误都是系统返回-1的原因。

所有其他返回的ed值是命令的退出代码。 0表示成功,所有其他值表示命令与EXIT_FAILURE崩溃。

答案 1 :(得分:1)

使用函数myfunciton(){echo "hello";} opencart22\catalog\controller\common\header.php 会更容易:

popen()