C++, кинуть байт в порт принтера
- Speccyfan
- Неотъемлемая часть форума
- Сообщения: 540
- Зарегистрирован: 18 дек 2004, 15:15
- Откуда: Polotsk
- Контактная информация:
C++, кинуть байт в порт принтера
Хочется на C++ кинуть байт в порт, вот нашел такой пример:
include <stdio.h>
#include <asm/io.h>
#include <unistd.h>
#define BASEPORT 0x378 /* lpt1 */
main()
{
outb(0, BASEPORT);
exit (0);
}
А она не компилирует А вот что говорит:
[speccyfan@localhost programming]$ gcc -o drive drive.c
In file included from /usr/include/linux/config.h:4,
from /usr/include/asm/io.h:4,
from drive.c:2:
/usr/include/linux/autoconf.h:1:2: #error Invalid kernel header included in userspace
[speccyfan@localhost programming]$
/usr/include/linux/autoconf.h содержит только одну строку:
#error Invalid kernel header included in userspace
gcc у меня вот такой:
i586-alt-linux-gcc (GCC) 3.3.3 20040412 (ALT Linux, build 3.3.3-alt5)
Раньше под ALT Linux Master2.2 все работало.
Как бы побороть ?
include <stdio.h>
#include <asm/io.h>
#include <unistd.h>
#define BASEPORT 0x378 /* lpt1 */
main()
{
outb(0, BASEPORT);
exit (0);
}
А она не компилирует А вот что говорит:
[speccyfan@localhost programming]$ gcc -o drive drive.c
In file included from /usr/include/linux/config.h:4,
from /usr/include/asm/io.h:4,
from drive.c:2:
/usr/include/linux/autoconf.h:1:2: #error Invalid kernel header included in userspace
[speccyfan@localhost programming]$
/usr/include/linux/autoconf.h содержит только одну строку:
#error Invalid kernel header included in userspace
gcc у меня вот такой:
i586-alt-linux-gcc (GCC) 3.3.3 20040412 (ALT Linux, build 3.3.3-alt5)
Раньше под ALT Linux Master2.2 все работало.
Как бы побороть ?
Best Regards, Yury Konovalov aka Speccyfan (2:453/53)
Registered Linux User #379588
Registered Linux User #379588
Speccyfan, бедншь смеяться - это НАМНОГО правильнее. Ибо работать напрямую с аппаратурой в unix не принято. Мой пример будет работать из-под любого пользователя, который имеет права на доступ к файлу /dev/lp0. А напрямю писать по портам ты можешь только из-под рута, причем придется пользовать "нежелательные" функции. Т.е. правильное решение писать файл до тех пор, пока файловые интерфейс удовлетворяет тебя своей функциональностью.
Опыт растет прямо пропорционально выведенному из строя оборудованию
Видимо решили не давать в руки пингвиноводам такое страшное оружие
С другой стороны -- сетевой интерфейс не имеет смысла сам по себе, без наличия чего-либо на другом конце кабеля, к нему подсоединенного.
Поэтому логика есть и в линуксявом подходе -- ведь нет смысла например, адресоваться к шлейфу жесткого диска как к отдельному устройству.
Или есть?
С другой стороны -- сетевой интерфейс не имеет смысла сам по себе, без наличия чего-либо на другом конце кабеля, к нему подсоединенного.
Поэтому логика есть и в линуксявом подходе -- ведь нет смысла например, адресоваться к шлейфу жесткого диска как к отдельному устройству.
Или есть?
I'll kill this code without a knife -- with only fork().