/sys/class/afile") 将文件设置为 1。 如果我在控制台上使用它,它运行良好,但如果我运行我的 C 程序,它会显示: sh: echo: I-6ren">
gpt4 book ai didi

无法通过 system() 从程序中设置 "echo"文件

转载 作者:太空宇宙 更新时间:2023-11-04 09:59:42 25 4
gpt4 key购买 nike

我尝试使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com