当前位置: 技术问答>linux和unix
求助,linux c system("reboot")的问题
来源: 互联网 发布时间:2016-11-20
本文导语: 我的问题是,如果system("reboot")失败,如何把失败的信息取出? 我想写到日志中去。 具体描述如下: 写了一个小程序 #include #include "cwatchdog.h" int main(int argc,char *argv[]) { CWatchDog terminal(argc,argv); terminal.Pro...
我的问题是,如果system("reboot")失败,如何把失败的信息取出? 我想写到日志中去。
具体描述如下:
写了一个小程序
其中CWatchDog是我写的一个检测状况的类,CWatchDog.Process()中有个循环一直在运行,如果发现情况出错了才退出,然后重启。
前一次情况,由于程序书写的错误,造成不断打开文件号直到达到极限,造成运行system("reboot")不成功,不能正常重启。
我的问题是,如果system("reboot")失败,如何把失败的信息取出来? 我想写到日志中去。
具体描述如下:
写了一个小程序
#include
#include "cwatchdog.h"
int main(int argc,char *argv[])
{
CWatchDog terminal(argc,argv);
terminal.Process();
system("reboot");
sleep(3);
system("reboot");
sleep(3);
return 0;
}
其中CWatchDog是我写的一个检测状况的类,CWatchDog.Process()中有个循环一直在运行,如果发现情况出错了才退出,然后重启。
前一次情况,由于程序书写的错误,造成不断打开文件号直到达到极限,造成运行system("reboot")不成功,不能正常重启。
我的问题是,如果system("reboot")失败,如何把失败的信息取出来? 我想写到日志中去。
|
system执行命令,将命令执行结果放到一个文件中,检查文件即可
system("reboot 2>&1 | tee -a xxx.log");
|
可以使用popen()代替system()
FILE *fp = popen("reboot", "r");
像读取文件一样,读取fp
pclose(fp);
FILE *fp = popen("reboot", "r");
像读取文件一样,读取fp
pclose(fp);
|
用if来判断system()的返回值是成功还是失败,然后打印错误信息
|
就这样
|
你这样是不行的,system的返回值不是robot的返回值
|
1楼正解。
其实自己也可以写一个。
http://wkt55555.blog.163.com/blog/static/4451525920105210042223/
其实自己也可以写一个。
http://wkt55555.blog.163.com/blog/static/4451525920105210042223/
|
.
|
请问一下system的参数不是应该是一个shell指令吗?怎么变成一个字符串了?
|
它出错的时候错误不是保存到errno 中了么,那么我们就可以将此错误信息通过write 或者 fwrite 函数写入日志文件 wtmpx 中。我是这么想的。