Однажды я написал простой демон на bash — также устанавливает значения в / proc / *. Например,
echo 50 > /sys/class/backlight/acpi_video0/brightness
Я хочу переписать в C ++ и поделиться — но как использовать / proc / * в C ++? как клиент
Помните: в Unix все является файлом (ну, конечно, почти все).
Ваш текущий код оболочки фактически означает: напишите значение 50 (echo 50
) в файл (redirection operator >
) какое имя следует (/sys/class/backlight/acpi_video0/brightness
).
В C ++ просто откройте /sys/class/backlight/acpi_video0/brightness
в виде файла и чтения / записи в него, используя любой метод, который вы предпочитаете: C ++ fstream
, C fopen/fread/fwrite
…
Пример с fstream
(а именно ofstream
так как мы только пишем к нему):
std::ofstream file("/sys/class/backlight/acpi_video0/brightness");
if (!file.is_open())
throw std::runtime_error("Could not open the file");
file << 50;
file.close();
Пример кода:
int val = 50;
FILE *f = fopen("/sys/class/backlight/acpi_video0/brightness", "w");
if (!f)
{
fprintf(stderr, "Huh, couldn't open /sys/class ... ");
exit(1);
}
fprintf(f, "%d", val);
fclose(f);