我正在尝试使用fs.writeFileSync
写入/sys/kernel/config/usb_gadget
下的系统文件,但是当将""
作为内容写入时,文件保持不变(原始内容完好无损),并返回
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
也没有返回结果。
我是否需要生成echo
进程来使其工作(虽然不是首选,但我想过这种方法——因为我不确定如何将其转换为同步任务)?
fs.writeFileSync()
提供一些自定义的mode
或flag
参数会更有可能对你有用?正如你在 源代码 中看到的,当你没有传递任何参数时,fs.writeFileSync()
的默认值为mode: 0o666, flag: 'w'
。运行一些实验并尝试不同的模式或标志。 - jfriend000o666
应该足够了,而0o777
则不需要。在我的情况下,flags
指的是'w'
:写入或'a'
:追加,我需要前者。还有其他想法吗? - Sterling Butters