c - 无法通过系统()从程序中设置带有“回声”的文件
问题描述
我正在尝试使用 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);
结果是“好的”,但文件没有改变。
解决方案
strlen(i)
产生未定义的行为,因为i
不是字符串;数组没有空终止的空间。此外,i[0]=1;
不会'1'
在数组中放入字符,而是放入值为 1 的字节,即“^A
字符”。
而是尝试write(fd, "1", 1)
- 不需要任何变量或strlen
.
推荐阅读
- button - 带有按钮的 ZStack 中的可点击图像
- rest - Tuple.of (vert.x pgclient) 中的数组
- http - 使用带有两因素身份验证的 HTTP GET 方法
- html - 使用 Angular 将 keyup.enter 与选项卡绑定
- python - 麻烦理解递归函数python
- c# - 查询按日期范围过滤数据表
- docker - docker 没有将文件放入预期的挂载文件夹中
- python - 使用 Numpy 矩阵进行笛卡尔连接(全部与全部)
- r - 在 knitr 的输出中包含 YAML,而不是 frontmatter
- java - Log4j maven dependency won't log to console