LINUX.ORG.RU

Чтение и запись в /sys на Сях

 


0

2

Всем привет! Понадобилось написать «супер-пупер программу» (ц), а как к этому подлезть я не знаю, что гуглить тоже не знаю, до этого пописывал мелкие программки не касаясь системных дел.

Буду рад, если направите куда гуглить и что почитать, примеру тоже буду очень рад.

Задача такая:

Отсюда читать /sys/devices/w1_bus_master1/w1_master_slaves
Сюда писать  /sys/devices/w1_bus_master1/w1_master_remove
Сюда писать  /sys/devices/w1_bus_master1/w1_master_search
Конечно можно сделать по тупому, но наверняка есть какие-то функции для этого?

Спасибо.

★★

Конечно можно сделать по тупому, но наверняка есть какие-то функции для этого?

Весь смысл псевдо-ФС типа sys или proc заключается в том, чтобы использовать те же open/read/write/close, что и для файлов.

i-rinat ★★★★★
()

Заранее хочу предупредить о подводном камне: inotify не работает с /sys (по крайней мере с некоторыми файлами).

Deleted
()

Обязательно на C? Да ещё с таким владением ЯП, что даже читать и писать файлы не можешь?

erfea ★★★★★
()
Ответ на: комментарий от erfea

Да. Могу, но я просто думал, что такое делается через стандартные библиотечные функции. После МК мне пока сложно писать под компы.

yaba ★★
() автор топика
Ответ на: комментарий от yaba

Да. Могу, но я просто думал, что такое делается через стандартные библиотечные функции.

Именно через стандартные библиотечные функции это и делается, функции есть в стандартной библиотеке. Не знать этого, зная C...

После МК мне пока сложно писать под компы.

Под компы писать проще. В ОС и библиотеках всё за тебя уже сделано, знай только дергай что тебе нужно.

erfea ★★★★★
()
Ответ на: комментарий от SZT

Ну можно и на ассемблере сразу, вручную дергая сисколлы. Так ещё низкоуровневей будет. Вопрос только зачем.

mix_mix ★★★★★
()
Ответ на: комментарий от anonymous

для некоторых файлов в /proc есть аналоги в виде функций

А может быть всё было наоборот? :)

melkor217 ★★★★★
()
Ответ на: комментарий от Gorthauer

Да зачем? Вы странные какие-то. Юзайте посиксный sbrk вместо malloc, умники. Есть удобные текстовые файлы, есть удобная стандартная библиотека, зачем велосипеды городить?

mix_mix ★★★★★
()
Ответ на: комментарий от mix_mix

Например затем, что fwrite добавит ненужную буферизацию, так что в конце надо будет еще fflush делать.

SZT ★★★★★
()
Ответ на: комментарий от i-rinat

Весь смысл псевдо-ФС типа sys или proc заключается в том, чтобы использовать те же open/read/write/close, что и для файлов.

Весь смысл псевдо-ФС типа sys или proc заключается в том, чтобы создать жуткий оверхед при элементарном вызове функции драйвера. Этот оверхед в свою очередь должен вызывать повышенное излучение тепла процессорами под управлением GNU Linux, которое приведёт к потеплению климата и вымиранию человеков, ниша которых наконец-то будет заполнена роботами. Каждый раз обращаясь к sys или proc ты вбиваешь очередной гвоздик в гроб для всего человечества.

anonymous
()
Ответ на: комментарий от anonymous

Каждый раз обращаясь к sys или proc ты вбиваешь очередной гвоздик в гроб для всего человечества.

Не расстраивайся. Вот тебе нека.

i-rinat ★★★★★
()
Ответ на: комментарий от SZT

Есть setvbuf. А ОПу достаточно fclose в конце. А от самого буфера никуда не деться: что snprintf+write, что просто fpritnf.

mix_mix ★★★★★
()
Ответ на: комментарий от mix_mix

sbrk не является аналогом malloc, он сегмент данных просто удлинняет. Чтобы из него сделать аналог malloc надо еще какие-то обертки клепать над ним. Кроме того его из позикса выкинули еще в 2001 году. Вот что в мане написано

4.3BSD; SUSv1, marked LEGACY in SUSv2, removed in POSIX.1-2001.

Более точным аналогом malloc будет mmap c флагами MAP_PRIVATE MAP_ANONYMOUS.

SZT ★★★★★
()
Ответ на: комментарий от mix_mix

А от самого буфера никуда не деться: что snprintf+write, что просто fpritnf.

Можно использовать open с флагами O_DIRECT и O_SYNC

SZT ★★★★★
()
Ответ на: комментарий от mix_mix

На /sys толку может и не быть, но если например куда-нибудь в /proc/pid/mem к чужому процессу надо залезть и что-то там переписать, или через /dev/mem ядро налету пропатчить, это может иметь смысл. Но это уже особые извращения

SZT ★★★★★
()
Ответ на: комментарий от Reset

А от этой буферизации с произвольным snprintf и спасаться-то не надо, т.к. она - добро. Хотя в особых случаях вместо snprintf+write эффективнее будет использовать writev.

Sorcerer ★★★★★
()
Последнее исправление: Sorcerer (всего исправлений: 1)
Ответ на: комментарий от mix_mix

таким образом иногда реализуются юзерспейс дрова... хак по крайней мере известный в определенных кругах ;)

anonymous
()
Ответ на: комментарий от Sorcerer

В линуксе есть еще особые сисколы sendfile и splice, которым даже такой буфер не нужен, все делается из пространства ядра

SZT ★★★★★
()
Ответ на: комментарий от anonymous

/proc нужен для убунтушных bash хакеров. там где важна произвдодительность, используют другие интерфейсы

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.