2016-10-28 34 views
0
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"파일/sys/class/gpio/gpio2/direction에 액세스하는 방법

+0

'sudo'를 사용해 보셨습니까? 그렇지 않으면 sys의 권한을 현재 사용자로 변경하십시오. – LPs

+0

나는 학생이고 학습 과정에있다. sys 권한을 변경하는 방법과 C 프로그램에서 sudo 명령을 구현하는 방법을 자세히 설명해 주시겠습니까? –

+1

매우 광범위한 문제입니다. 여기 [sudo 명령] (https://www.linux.com/blog/how-use-sudo-and-su-commands-linux-introduction) 또는 [여기에 대한 허가] (http : /linuxcommand.org/lts0070.php) 두 경우 모두 sudoer 사용자 또는 수퍼 유저가 있어야합니다. – LPs

답변

0

pi 사용자 (기본 사용자)로 로그인하지 않은 경우 사용자를 "gpio"그룹에 추가하십시오. 그러면 GPIO 파일에 대한 읽기/쓰기/실행 권한이 부여됩니다.

+0

"gpio"그룹에 내 사용자를 추가하는 방법과 내가 기본 사용자인지 또는 다른 사용자인지 확인하는 방법은 무엇입니까 ?? –

+0

터미널 프롬프트에서 pi @ raspberrypi가 보이십니까? –

+0

그리고 사용자 그룹을 보려면 터미널을 열고 사용자 이름을 입력하십시오. 예를 들어 그룹 pi를 입력하면 다음 그룹을 얻습니다. pi : pi adm dialout cdrom sudo 오디오 비디오 plugdev 게임 사용자 입력 netdev spi i2c gpio debian-transmission. 보시다시피 pi는 gpio 그룹에 기본적으로 있습니다. 기존 사용자를 기존 그룹에 추가하는 방법은 다음을 참조하십시오. [link] http://www.howtogeek.com/50787/add-a-user-to-a-group-or-second-group-on-linux/ [/ link] –