Node.js:使用fs.writeFileSync写入系统文件

时间:2020-01-30 23:27:53

标签: node.js file-io fs file-writing

我试图使用/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不返回任何内容(即使正在运行Node进程),lsof | grep /sys/kernel/config/usb_gadget/kvm-gadget/UDC也不返回任何内容。

我是否需要spawn一个echo流程才能使其正常工作(不是首选,但我已经跨了头脑,因为不确定是否将其转换为同步任务)?

1 个答案:

答案 0 :(得分:4)

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

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

fs.writeFileSync()特有的内容,您可能会遇到相同的错误 用普通的C程序。

/ sys / kernel / config / usb_gadget不是一个真实的文件,它是一种通信 内核的usb小工具驱动程序的通道。就是那个司机 返回错误。

(如果您真的感兴趣,我可以将您指向代码行。 它是任何内核源代码树中的drivers / usb / gadget / configfs.c 情况。