【问题标题】:How can I access the "Permission denied" file /sys/class/gpio/gpio2/direction from a user space program如何从用户空间程序访问“权限被拒绝”文件 /sys/class/gpio/gpio2/direction
【发布时间】:2016-10-28 07:20:10
【问题描述】:
int fd;
ssize_t w;
char i[35]="/sys/class/gpio/gpio";

strcat(i,a);

strcat(i,"/direction");

fd=open(i,O_WRONLY);
if(fd==-1){
    perror("direction:");
    return(-3);

这是我的代码的一部分。我正在使用 sysfs 文件访问为 Raspberry Pi 的 GPIO 编写程序。我想通过上面的代码访问这个路径,但是它没有打开,并且显示的错误是 Permission denied。我怎样才能访问这个文件?

【问题讨论】:

  • 您是否尝试过使用sudo... 否则将 sys 的权限更改为您当前的用户。
  • 我是一名学生,正在学习中。请您详细说明如何更改sys的权限,以及如何在我的C程序中实现sudo命令
  • 这是一个非常广泛的问题。你应该看看here for sudo commandhere for permission这两种情况你都必须有一个sudoer用户或一个超级用户..
  • 给定的链接告诉一些 sudo 命令和权限。我想要一个可以替换或修改上面代码的C程序
  • 权限由我的操作系统管理。没有权限你不能这样做。这是一条追逐自己尾巴的狗。

标签: c linux raspbian raspberry-pi3 sysfs


【解决方案1】:

如果您没有以 pi 用户(默认用户)身份登录,请将您的用户添加到“gpio”组。这将为您提供对 GPIO 文件的读/写/执行权限。

【讨论】:

  • 如何将我的用户添加到“gpio”组,以及如何检查我是默认用户还是其他用户??
  • 您在终端提示符中看到 pi@raspberrypi 吗?
  • 为了查看您的用户组,您打开一个终端并输入您的用户名组。例如,如果我输入 groups pi,我会得到以下组; pi : pi adm dialout cdrom sudo audio video plugdev games 用户输入 netdev spi i2c gpio debian-transmission。如您所见, pi 默认位于 gpio 组中。要将现有用户添加到现有组,请参阅以下 [link]howtogeek.com/50787/…
  • 对不起,我是 SE 的新手,所以请从上面的链接中删除最后的方括号,以免得到 404
  • 顺便说一下,我是以 pi 用户身份登录的
猜你喜欢
  • 2021-08-11
  • 2012-07-23
  • 1970-01-01
  • 2014-08-10
  • 1970-01-01
  • 1970-01-01
  • 2021-09-16
  • 2023-03-25
  • 2023-01-04
相关资源
最近更新 更多