C:要换这个吗?

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

我正在做一个程序,用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("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,所以我更喜欢用它。