写入C中的Linux sysfs节点

从shell我可以激活我的系统上的LED像这样:

#echo 1 > /sys/class/leds/NAME:COLOR:LOCATION/brightness 

我想从C程序中做同样的事情,但是我还没有find一个简单的例子来说明如何完成这个任务。

Solutions Collecting From Web of "写入C中的Linux sysfs节点"

像文件一样打开sysfs节点,向它写入'1',然后再关闭它。

例如:

 #include <stdio.h> #include <fcntl.h> void enable_led() { int fd; char d = '1'; fd = open("sys/class/leds/NAME:COLOR:LOCATION/brightness", O_WRONLY); write (fd, &d, 1); close(fd); } 

像这样的东西:

 #include <stdio.h> int main(int argc, char **argv) { FILE* f = fopen("/sys/class/leds/NAME:COLOR:LOCATION/brightness", "w"); if (f == NULL) { fprintf(stderr, "Unable to open path for writing\n"); return 1; } fprintf(f, "1\n"); fclose(f); return 0; } 

我没有启动到我的Linux分区,但我怀疑它是这样的:

 int f = open("/sys/class/leds/NAME:COLOR:LOCATION/brightness",O_WRONLY); if (f != -1) { write(f, "1", 1); close(f); } 

如果你正在寻求海峡前进,而不是寻找性能或任何东西只是使用system()函数来调用命令,就像你从shell中调用一样。 这里有一个参考。

 /* system example */ #include <stdio.h> #include <stdlib.h> int main () { system( "echo 1 > /sys/class/leds/NAME:COLOR:LOCATION/brightness"); return 0; }