我尝试使用 system("echo 1 >/sys/class/afile") 将文件设置为 1。
如果我在控制台上使用它,它运行良好,但如果我运行我的 C 程序,它会显示:
sh: echo: I/O error
我已经尝试用下面的代码设置它:
char i[1];
i[0]=1;
int fd1 = open("/sys/class/afile",O_CREAT | O_WRONLY);
int ret = write(fd1,i,strlen(i));
if(ret > 0)
printf("Ok\n");
else
printf("nOk\n");
close(fd1);
结果是“Ok”但是文件没有改变。
最佳答案
strlen(i)
产生未定义的行为,因为 i
不是字符串;该阵列缺少空终止空间。此外,i[0]=1;
不会在数组中放入一个'1'
字符,而是放入一个值为 1 的字节,这是一个“^A
字符”。
改为尝试 write(fd, "1", 1)
- 不需要任何变量或 strlen
。
关于无法通过 system() 从程序中设置 "echo"文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57302669/