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;
}