最近用c wiringPi学习控制led,例程编译后在linux命令界面能正常运行。
后来尝试在apache环境,通过web控制led,始终不能点亮,
后来发现 在这个函数wiringPiSetup(); 就卡住了。
反复测试,发现是编译好的led程序的权限不够,
chmod 4755 led
赋予权限后再通过web调用就能正常控制led了。
由于apache是搭建在linux系统中,许多linux的操作,需要权限才能执行。
所以,如果单独调试的程序能正常执行,如果换了环境就出错误,就要考虑程序的执行权限的问题
补充:
有博文说,https://blog.csdn.net/qq_31669419/article/details/53339770
在树莓派中运行opencv与GPIO结合的程序时,如果使用wiringPiSetup()设置函数初始化wiringPi系统,运行程序时必需获取root权限,但此时若调用函数imshow时出错
其实,在wiringPi中还提供了wiringPiSetupSys(void)初始化函数,它可以被非root用户调用,提供的GPIO引脚必须在事先使用gpio命令导出。在这种模式下的引脚编号是原生的Broadcom GPIO引脚编号(BCM)。
wiringPiSetupSys();
pinMode(17,OUTPUT);//BCM第17脚就是wringPI第0脚
在运行程序之前,先在终端中输入指令
gpio export 17 out
------------------------------------
感觉有点麻烦,还是给权限吧