android - Linux API,即使使用正确的文件描述符和权限,Write() 也会失败

标签 android c linux

我正在调试写入调用失败的问题。

#define PATH_1 "/sys/p/lock"
#define PATH_2 "/sys/p/unlock"

void api_init()
{
    fd_name_1 = open(PATH_1, O_WRONLY|O_APPEND);
    fd_name_2 = open(PATH_2, O_WRONLY|O_APPEND);
}

void api_acquire()
{
    return_1 = write(fd_name_1, WAKELOCK_NAME, strlen(WAKELOCK_NAME));
    if(return_1 != (int)strlen(WAKELOCK_NAME))
         printf("error writing to file");
}

int api_release()
{
    return_2 = write(fd_name_2, WAKELOCK_NAME, strlen(WAKELOCK_NAME));
    if(return_2 != (int)strlen(WAKELOCK_NAME))
         printf("error writing to file");
}
int main(void)
{
    api_init();
    api_acquire();
   /*after some work*/
    api_release();
}

从上面的代码中,我能够获取 ok,但无法释放锁,我得到的 return_2 为 -1。谁能帮我调试此失败的可能原因。

最佳答案

我猜你不能写入/sys/p/lock或/sys/p/unlock,因为它不是真正的文件系统,这些文件不支持写入。

https://en.wikipedia.org/wiki/Sysfs?wprov=sfla1

关于android - Linux API,即使使用正确的文件描述符和权限,Write() 也会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35499855/

相关文章:

c - TCP 客户端/服务器 : when stop read socket

c++ - 重定向 APPCRASH 转储(或将其关闭)

linux - 我在哪里添加系统调用到 linux 内核源代码

从 shell 调用 python 脚本时不执行

android - 在 itemclick 的自定义 ListView 中显示隐藏 TextView

android - Android : difference between total stats and per UID stats 监控数据使用

android - android eclipse 中的错误

android - DocumentReference.set(Object o) 更改 bool 字段名称

计算数组的一部分的平均值

Linux,无主目录设置上的命令行程序配置文件