C /sys/class/pwm init внутри программы

Итак, по этой ссылке видно, что у вас есть pwm /sys/ класс /шм/.

Так что в настоящее время я помещаю правильные данные в соответствующие файлы, и все работает хорошо.

Это не проблема. Проблема в том, что вам нужно сделать «кошку» в файле /sys/class/pwm/{port}/request, прежде чем он станет активным. Поэтому, если вы перезагрузите его, он не будет работать, и вам придется его повторно инициировать.

Я пытался просто fopen("~request","r"), надеясь, что это сработает, но это не так. Открытие его для "w" либо. Я также пытался выполнить exec(), но это не сработало и все равно неуклюже. Я не хочу делать необходимые предположения.

Во всяком случае, вот мой код execv().

char *request[1];
request[0] = pwmbus;
execv("/bin/cat",request);

Каков самый элегантный способ кастрировать файл? Мне не нужна информация, которую он выводит. Он просто инициализирует sysfs. В противном случае мне придется делать это вручную или все время писать сценарии.

cat /sys/class/pwm/gpio_pwm.0:0/request
sysfs 719

person napierzaza    schedule 20.10.2012    source источник
comment
может быть int fd = open("/sys/class/pwm", O_RDONLY); char buf[1]; read(fd, buf, 1); close(fd);   -  person    schedule 20.10.2012
comment
@napierzaza С кем ты разговариваешь? Этот вопрос должен быть понят только конкретным человеком?   -  person bubble    schedule 20.10.2012
comment
@ H2CO3, спасибо, я этого не пробовал. Работает.   -  person napierzaza    schedule 20.10.2012
comment
@napierzaza Я сделал это ответом, пожалуйста, проголосуйте и примите, если это помогло! Спасибо.   -  person    schedule 20.10.2012


Ответы (1)


Вы можете прочитать один байт из файла:

int fd = open("/sys/class/pwm", O_RDONLY);
char buf[1];
read(fd, buf, 1);
close(fd);
person Community    schedule 20.10.2012