6

在 shell 中,我可以像这样激活系统上的 LED:

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

我想从 C 程序中做同样的事情,但我找不到一个简单的例子来说明如何做到这一点?

4

3 回答 3

9

像文件一样打开 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);
}
于 2012-05-05T02:02:33.113 回答
3

像这样的东西:

#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;
}
于 2012-05-05T02:03:14.950 回答
2

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

int f = open("/sys/class/leds/NAME:COLOR:LOCATION/brightness",O_WRONLY);
if (f != -1)
{
    write(f, "1", 1);
    close(f);
}
于 2012-05-05T02:03:36.990 回答