2013-08-13 3 views
1

그래서 임베디드 리눅스 파일 (Nitrogen6x 보드)에 쓰려고합니다. echo 1 > /sys/class/gpio/gpio16/value을 사용하여 수동으로이 작업을 수행 할 수 있습니다. 그러나 C 코드를 통해이 동일한 작업을 시도하면 다음과 같이됩니다.이 파일이 쓰지 않는 이유는 무엇입니까?

FILE *fs; 
fs = fopen("/sys/class/gpio/gpio16/value","w") 
fputc(1,fs); 
fclose(fs); 

이 작동하지 않습니다. 그것은 어떤 오류나 아무것도주지 않는다, 그것은 단지 작동하지 않는다. 아무도 전에 이것을 만난 적이 있습니까? 이 문제를 해결하려면 어떻게해야합니까? 수동으로하는 것처럼 "echo"할 수있는 방법이 있습니까?하지만 코드에서이 작업을 수행합니까? 계속 진행하는 가장 좋은 방법은 무엇입니까?

도움 주셔서 감사합니다.

+0

바이너리 또는 텍스트 모드로 쓰고 있습니까? 프린터가 인쇄 할 수없는 값을 출력 중입니다. –

+0

가장 먼저 할 일은'fs'가'NULL'이 아닌지 확인하는 것입니다. 즉, 파일을 성공적으로 열 수 있었습니까? – Floris

+3

처음에는 'FILE'이 아니라'FILE *'입니다. 나는이 컴파일 된 충격을 받았다. – WhozCraig

답변

7

gpio16/값에 "CTRL-A"(에코가 보내는 숫자 '1'이 아닌 문자 코드 1)를 쓰고 있기 때문입니다.

시도 :

fputs("1\n", fs); 
+0

Mats - 캐릭터가 아닌 문자열을 쓰고 있습니까? – Floris

+0

예, @corduro 님이 수정하였습니다. –

+0

나는 이것을 보았지만 행운이 없었다. – Eman

3

fputc('1',fs);를 사용해보십시오 : 그것은 여전히 ​​작동하지 않으면

fputc('1', fs); 

, 그것은 당신이뿐만 아니라 줄 바꿈이 필요하다고 할 수있다.

echo asci를 작성하면 파일로 리디렉션됩니다.

관련 문제