LINUX.ORG.RU

с чего начать изучение c под unix?


0

0

сисадминство знаю - 3 года сисадмин, perl - знаю, дрова простые писал на сях для lpt-порта c обвязкой для perl и всякую туфту для www...

встретил недавно доку нормальную, как дрова писать для ядра, написал оттуда экзампл, делал insmod, lsmod, rmmod - все пашет... но проблема в том, что сей так же как perl не знаю вообще, тем более c++.

хотелось бы спросить у народа, что начать читать/изучать чтобы хоть как-то в сях разобраться... ?

Спасибо за ответы!

anonymous

Ну если ты хочешь изучить Си то прочитай книгу Кернигана и Ритчи "Я зык Си". Эта книга наставит тебя на путь истиный. А дальше кодить, кодить и кодить! Если не будешь писать программ то никакая книга тебе не поможет. Далее когда просесчешь фишку, начинай читать исходники. Как начитаешься, и напрограммируешься то считай разобрался в сях. Я токо вот чего не пойму, как же ты драйвер писал, если Си не знаешь, и с оббвязкой для Перл?? Если и его не знаешь?!?

OxiD ★★★★
()

короче это не драйвер даже, драйвер вроде как подразумевает 
работу юзеров, а не из под рута. Помотрел несколько исходников 
как с lpt работать и небольшое свое сделал:

#include <stdio.h>
#include <unistd.h>
#include <asm/io.h>

#define base 0x278
#define time 100000

int main(){
  int x = 0x32;
  printf("идет импульс в парралельный порт !\n");
  if (ioperm(base,3,1))
  printf("Couldn't get port at %x\n", base), exit(1);
  if (ioperm(base, 3, 1)) {perror("ioperm"); exit(1);}
  while(1){
    outb(x, base);
    usleep(time);
    outb(0, base);
    usleep(time);
  }
}
exit(0);

потом почитал man perlxstut и получил перловый модуль, 
который работает с параллельным портом:

#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include <stdio.h>
#include <unistd.h>
#include <asm/io.h>

#define base 0x278
#define time 100000

MODULE = port           PACKAGE = port          

int
main()
CODE:
  int x = 0x32;
  printf("Пошел импульс в паралельный порт !\n");
  if (ioperm(base,3,1))
    printf("Couldn't get port at %x\n", base), exit(1);
  if (ioperm(base, 3, 1)) {perror("ioperm"); exit(1);}
  while(1){
    outb(x, base); 
    usleep(time);
    outb(0, base);
    usleep(time);
  }
exit(0);

далее

#!/usr/bin/perl
use ExtUtils::testlib;
use Mytest;
Mytest::main();

File u.pl not changed so no update needed.
[root@m100 port]# ./u.pl
Пошел импульс в паралельный порт !

[root@m100 port]#

вот и все что умею на сях :)

но сей по настоящему не знаю(понимаю, что не знаю. потому и 
спросил, а это все поделка была с портом, короче, мозгов 
привинтить экзампл из сети хватит но не больше), в чем вся фишка то. 

За Кернигана и Ритчи спасибо! С него и начну.
дима

anonymous
()

я имел ввиду, что сей не знаю настолько, насколько знаю perl. В этом смысле фраза "что сей так же как perl не знаю вообще"...

anonymous
()

главное - не писать модули на плюсах :)

SadStork
()

Советую почитать книгу "Advanced Linux Proggraming" Mark Mitchell, Jeffrey Oldham and Alex Samuel. Есть ее перевод на русский называется типа "Программирование в linux для профессионалов". Перводной в электронном виде не видел. Оригинал много где в инете лежит. По моему, книжка очень и очень хорошая, т.к. подробно описывает многие особенности линуха с точки зрения программиста.

UncleAndy ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.