[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: права для /sys/class



On Sat, 26 Sep 2009, Roman V. Nikolaev wrote:

Подскажите пожалуйста как лучше сделать:
Есть файл управления светодиодом на ноуте
/sys/class/leds/asus::mail/brightness

-rw-r--r-- 1 root root 4096 Сен 26 16:13 brightness

соответственно есть пользовательская программа которая должна писать
туда 1 или 0 (вкл/выкл светодиод).
Я задал права для файла и проверил что все работает, но естественно
после перезагрузки права были сброшены.
Есть ли какой нибудь путь работы с данным файлом без создания скрипта
смены прав при загрузке?
Как правильно разрешить такую ситуацию?


 Можно, например, маленькую программку на С написать
 (в приложении). Компилируете, рутом копируете в
 /usr/local/bin и устанавливаете s-бит. Вроде всё.

 Ю.

#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>

static void usage()
{
	fprintf (stderr, "usage: mail_led [on/off]\n");
	fprintf (stderr, "       switch on/off mail_led on asus-laptop\n");
	exit (1);
}

int main(int argc, char* argv[])
{
  const char* mail_led="/sys/class/leds/asus::mail/brightness";
  int status = 0;
  
  if (argc == 1) usage();

  if( strcmp(argv[1],"off") == 0 ) {
    status = 0;
  } else if( strcmp(argv[1],"on") == 0 ) {
    status = 1;
  } else {
    usage();
  }
  
  FILE *f=fopen(mail_led,"r+");
  if (!f) {
     fprintf (stderr, 
             "Error opening file: %s\n",
             strerror(errno));
     return 1;
  }

  if( status == 0 )
    fprintf(f,"0");
  else
    fprintf(f,"1");

  fclose(f);
  
  return 0;
}

Reply to: