>как я понял, получается 2 программы
>1 - демон, который непосредственно управляет лампочками,
>2 - клиент который понимает запросы пользователя и на своём птичьем
>языке передает их в 1.
>По поводу коммуникаций между 1 и 2 посмотри ipc/msgq - наиболее простой
>вариант.
Може я чтото не правельно обиясняю, или не понимаю. Допустим есть такой пример
#include <stdio.h>
#include <fcntl.h>
#include <machine/cpufunc.h>
int main(int argc,char* argv[])
{
int val,port;
int fd;
if(argc<3){fprintf(stderr,"usage: %s port value\n",argv[0]); exit(1);}
if(sscanf(argv[1],"0x%x",&port) && sscanf(argv[2],"0x%x",&val))
{
fd=open("/dev/io",O_RDWR);
if(fd==-1){perror("open");exit(1);}
outb(port,val);
close(fd);
}
else
{
fprintf(stderr,"port and value must be in hex format with 0x
prefix\n"); exit(1);
}
}
компилируем:
# gcc outb.c -o outb
запускаем:
# ./outb 0x3f2 0x10 лампочка дисковода загорелась
# ./outb 0x3f2 0x0 потухла
Как я понимаю, при каждом # ./outb 0x3f2 0x10 прога загружается с винта в память, делает свою работу и умерает, а мне надо чтобы прога находилась в памяти всегда, пока я ее не убию, и при каждой команде # ./outb 0x3f2 0x10 чтобы OS не искала прогу на винте или на других дисках для запуска, а прога делала б свое дело и ждала бы следующею команду.