【发布时间】:2020-11-22 15:04:25
【问题描述】:
在c 的Linux 中写入/proc 或/sys 文件系统的正确方法是什么?
我可以像在任何其他文件中那样写,还是有什么特别的注意事项需要注意?
例如,我想模拟echo -n mem > /sys/power/state。下面的代码是正确的做法吗?
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv) {
FILE *f;
f = fopen("/sys/power/state", "w");
if(f == NULL) {
printf("Error opening file: /sys/power/state\n");
exit(1);
}
fprintf(f,"%s","mem");
fclose(f);
}
【问题讨论】:
-
您的代码对我来说看起来不错。你试过了吗?
-
echo不知道它正在写信给sys,你的程序为什么要写? -
@n。 '代词' m - 就 echo 而言,它认为它正在写入终端。重定向由 shell 处理。而且我不知道shell是否对/sys有一些特殊处理。毕竟,sys 和 proc 在很多方面确实表现不同。
-
它写入标准输出。 Shell 对
/proc或/sys也一无所知。 -
/proc/ 和 /sys 中的文件是 files 是有充分理由的。原因是能够使用处理文件的现有工具访问它们。如果它们需要特殊处理,那么通过类似文件但不完全的接口使它们可用是绝对零意义的。