2013-08-13 4 views
1

Итак, у меня есть ситуация, когда я пытаюсь написать во встроенный файл Linux (плата Nitrogen6x). Я могу сделать это вручную с помощью echo 1 > /sys/class/gpio/gpio16/value. Однако, когда я пытаюсь сделать то же самое с помощью кода C:Почему этот файл не пишет?

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

не работает. Он не дает никаких ошибок или чего-то еще, он просто не работает. Кто-нибудь когда-либо сталкивался с этим раньше? Что я могу сделать, чтобы исправить это. Есть ли способ «эха», как я делаю вручную ... но делать это из кода? Каков наилучший способ?

Спасибо за вашу помощь!

+0

Вы пишете в двоичном или текстовом режиме? Ваш fputc выводит значение, не подлежащее печати. –

+0

Первое, что нужно сделать, это убедиться, что 'fs' не' NULL' - другими словами, смогли ли вы успешно открыть файл? – Floris

+3

Для начала, его 'FILE *', а не 'FILE'. Я потрясен этим составленным. – WhozCraig

ответ

7

Это потому, что вы пишете «CTRL-A» (код символа 1, а не цифра «1», который посылает эхо) в значение gpio16 /.

Try:

fputc('1', fs); 

Если это все еще не работает, это может быть, что вам нужно, а символ новой строки:

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

Маты - вы пишете строку, а не персонаж? – Floris

+0

Да, опечатка, исправлена ​​@corduro. –

+0

Я пробовал это, но не повезло. – Eman

3

Попробуйте с помощью fputc('1',fs);.

echo пишет asci, что вы перенаправляете файл.

Смежные вопросы