Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив2 / курсовая docx200 / Kursovaya_OSiO_Kostousov.docx
Скачиваний:
49
Добавлен:
07.08.2013
Размер:
255.45 Кб
Скачать

Анализ результатов

Была успешно установлена операционная система UbuntuсемействаLinux.

Были разработаны 3 приложения, каждое из которых работает.

Нами были закреплены навыки использования терминала для управления персональным компьютером, как то:

- использование стандартных команд;

- написание своих программ, в частности во встроенном редакторе, их сборка и отладка;

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

Источники

  1. http://ubuntu.ru/

  2. http://lxr.linux.no/linux/

  3. http://www.linuxmanpages.com/man4/console.4.php

  4. http://www.linuxmanpages.com/man4/console_ioctl.4.php

  5. http://lxr.linux.no/linux+v3.6.6/Documentation/ioctl/cdrom.txt#L251

  6. http://lxr.linux.no/linux+v3.6.6/Documentation/ioctl/cdrom.txt#L270

  7. http://ru.wikipedia.org/wiki/%D0%A9%D0%B5%D0%BB%D0%BA%D1%83%D0%BD%D1%87%D0%B8%D0%BA

  8. http://ru.wikipedia.org/wiki/%D4%E0%E9%EB%EE%E2%FB%E9_%E4%E5%F1%EA%F0%E8%EF%F2%EE%F0

  9. http://ubuntuforums.org/showthread.php?t=873679

  10. man - (manual) – команда вызова справки через терминал (manual)

Приложение

1. Программа 1led.c

#include <stdio.h>

int main( int argc , char *argv[])

{

int fd = 0;

char leds;

int i=0;

char LED[] = {LED_NUM,LED_CAP,LED_SCR};

int inter = 0;

fd = open("/dev/console",O_RDWR);

if(fd<0) {

perror("open(/dev/console)");

return 1; }

ioctl(fd,KDGETLED, &leds);

if (argc != 2)

{

printf("%s\n","Error. Rewrite parametrs!");

return 2;

}

if(strcmp(argv[1],"1")==0)

{

int j=0;

for(i=0;i<25;i++)

{

for(j=0;j<3;j++)

{

ioctl(fd,KDSETLED,0);

ioctl(fd,KDSETLED,LED[j]);

usleep(100000);

}

}

}

if(strcmp(argv[1],"2")==0)

{

for(i=0;i<25;i++)

{

ioctl(fd,KDSETLED,0);

ioctl(fd,KDSETLED,LED[rand()%3]);

usleep(100000);

}

}

close(fd);

return 0;}

2. Программа 2cd.c

#include <stdio.h>

#include <signal.h>

#include <linux/kd.h>

#include <sys/types.h>

#include <fcntl.h>

#include <linux/cdrom.h>

int main(int argc, char* argv[])

{

int fd;

int i =0;

int frequency[]={300,0,300,0,300,0,250,0,350,300,0,250,0,350,300,0};

int duration[]={500,50,500,50,500,50,500,50,250,500,50,500,50,250,500,50};

fd = open("/dev/sr0", O_RDWR|O_NONBLOCK);

if(fd<0) {

perror("open(/dev/cdrom)");

return 1; }

for(i=0;i<16;i++)

{if((i==0)||(i==8)) {ioctl(fd,CDROMEJECT,0);}

if((i==5)||(i==13)) {ioctl(fd,CDROMCLOSETRAY,0);}

if(frequency[i]!=0) {frequency[i]=1193180/frequency[i];}

ioctl(fd, KIOCSOUND, frequency[i]);

usleep(1000*duration[i]);

}

close(fd);

return 0;}

3. Программа 3musicbox.c

#include <stdio.h>

#include <signal.h>

#include <sys/ioctl.h>

#include <unistd.h>

#include <linux/kd.h>

#include <sys/types.h>

#include <fcntl.h>

int main(int argc, char* argv[]){

int fd;

int i = 0;

int j = 0;

fd = open("/dev/tty0", O_WRONLY);

if(fd<0)

{perror("open(/dev/tty0)");return 1;}

if (argc != 2)

{printf("%s\n","Error. Rewrite parametrs!");

return 2; }

if(strcmp(argv[1],"1")==0)

{for (j=0;j<5;j++)

{int frequency = 0x0384;

int deltafreq = 0x000A;

for(i=0;i<200;i++)

{frequency=frequency+deltafreq;

ioctl(fd, KIOCSOUND, frequency);

usleep(10000);}

for(i=0;i<200;i++)

{

frequency=frequency-deltafreq;

ioctl(fd, KIOCSOUND, frequency);

usleep(10000);

}

}

}

if(strcmp(argv[1],"2")==0)

{

int frequency;

int duration[] = {300, 900, 300, 900, 100, 400, 100, 1000};

for(i=0;i<5;i++)

{

for(j=0;j<8;j++)

{

frequency = 0x0064;

if (j%2==0) {frequency=0;}

ioctl(fd, KIOCSOUND, frequency);

usleep(1000*duration[j]);

}

}

}

if(strcmp(argv[1],"3")==0)

{

int frequency[] = {247, 417, 417, 370, 417, 329, 247, 247, 417, 417, 370, 417, 497, 0, 497, 277, 277, 440, 440, 417, 370, 329, 247, 417, 417, 370, 417};

for(i=0;i<27;i++)

{

if(frequency[i]!=0) {frequency[i]=1193180/frequency[i];}

ioctl(fd, KIOCSOUND, frequency[i]);

usleep(500000);

}

}

ioctl(fd, KIOCSOUND, 0);

close(fd);return 0;}

1Файловый дескриптор — это неотрицательное целое число. Когда создается новый поток ввода-вывода, ядро возвращает процессу, создавшему поток ввода-вывода, его файловый дескриптор (Wikipedia.org).

11

Соседние файлы в папке курсовая docx200