C:要换这个吗?
我正在做一个程序,用C语言为我的Raspberry Pi编写,根据它是否连接到互联网来打开和关闭一些灯 我完成的代码和我希望的工作方式如下:C:要换这个吗?,c,multithreading,raspberry-pi2,C,Multithreading,Raspberry Pi2,我正在做一个程序,用C语言为我的Raspberry Pi编写,根据它是否连接到互联网来打开和关闭一些灯 我完成的代码和我希望的工作方式如下: int doPing() { int stat = system("ping -c 1 google.com"); return stat; } int main() { int status; int prev_status, isdif; status = doPing(); if(status==0) system
int doPing() {
int stat = system("ping -c 1 google.com");
return stat;
}
int main() {
int status;
int prev_status, isdif;
status = doPing();
if(status==0)
system("sudo /home/pi/goingWellBlink &");
else
system("sudo /home/pi/errorBlink &");
prev_status = status;
for(;;) {
status=doPing();
if(status!=prev_status)
isdif=1;
else
isdif=0;
if(isdif && status==0) {
system("sudo pkill errorBlink &");
system("sudo /home/pi/goingWellBlink &");
}
if(isdif && status!=0) {
system("sudo pkill goingWellBlink &");
system("sudo /home/pi/errorBlink &");
}
prev_status=status;
sleep(10);
}
return 0;
}
其中,errorBlink
和goingwelllink
是我已经编译过的程序,它们在无限循环中运行,每个都执行不同的光序列
基本上,main开始询问ping的返回状态,并在此基础上启动一个light序列。除非检测到ping返回状态的变化,否则该灯序列不会改变
出于可移植性的目的,并且不依赖于两个文件的确切位置,我希望在代码中插入,
errorBlink
和goingwelllink
作为无效函数,并使用线程执行相同的代码。与其启动一个外部程序,用轻序列启动一个线程,我如何才能做到这一点呢?这必须用c语言实现吗?因为如果不是这样,这项任务似乎更容易实现。
例如,您可以使用每分钟运行一次的bash脚本来检查internet的状态,然后使用python脚本与gpio引脚交互以打开指示灯。为什么不将此代码重写为bash脚本,然后在bash中执行多线程操作?依我看,这会简单得多。此外,根据定义,整个任务(触发GPIO行)可以用脚本语言(即bash)而不是C语言更优雅地解决。或者我遗漏了什么?不,你是对的。只是我一直在使用wiringPi库,我们正在大学课堂上学习C,所以我更喜欢用它。