Node.js: запись в системные файлы с помощью fs.writeFileSync - PullRequest
4 голосов
/ 31 января 2020

Я пытаюсь записать в системный файл в /sys/kernel/config/usb_gadget с fs.writeFileSync, но при записи "" в качестве содержимого, файл остается неизменным (с оригинальным содержимым в такте) и приводит к

Error: EBUSY: resource busy or locked, write
    at Object.writeSync (fs.js:581:3)
    at Object.writeFileSync (fs.js:1275:26)
    at Socket.<anonymous> (/opt/sterling/ip-kvm-interface/app.js:249:6)
    at Socket.emit (events.js:210:5)
    at /opt/sterling/ip-kvm-interface/node_modules/socket.io/lib/socket.js:528:12
    at processTicksAndRejections (internal/process/task_queues.js:75:11) {
  errno: -16,
  syscall: 'write',
  code: 'EBUSY'
}

при написании другого содержимого. Разрешения для целевого файла записи - 777.

Не способен fs.writeFileSync записать в файлы в sys или я что-то пропустил?

Использование fsuser /sys/kernel/config/usb_gadget/kvm-gadget/UDC ничего не возвращает (даже когда Процесс узла запущен) и lsof | grep /sys/kernel/config/usb_gadget/kvm-gadget/UDC также ничего не возвращает.

Мне нужно будет spawn процесс echo, чтобы заставить это работать (не желательно, но приходило мне в голову - поскольку не знаю, как Я бы преобразовал это в синхронную задачу)?

1 Ответ

4 голосов
/ 05 февраля 2020

https://github.com/nodejs/help/issues/2459

Are there undocumented limitations to fs.writeFileSync that I am unaware of?

Ничего не указывает c для fs.writeFileSyn c (), вы можете получить ту же ошибку с простым C program.

/ sys / kernel / config / usb_gadget - это не настоящий файл, это канал связи с драйвером гаджета usb ядра. Это тот драйвер, который возвращает ошибку.

(Я мог бы указать вам строку кода, если вы действительно заинтересованы. Это драйверы / usb / gadget / configfs. c в дереве исходного кода ядра в в любом случае.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...