ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Linux-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 2cd. c sudo ./cd Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС запуск производится Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Благодаря функциям открытия дисковода (ioctl (fd, CDROMEJECT, 0)) ΠΈ Π΅Π³ΠΎ закрытия (ioctl (fd, CDROMCLOSETRAY, 0)) рСализуСтся ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ «Ρ‚Π°Π½Ρ†Π°» ΠΏΠΎΠ΄ саундтрСк ΠΊ Ρ„ΠΈΠ»ΡŒΠΌΡƒ «Π—Π²Π΅Π·Π΄Π½Ρ‹Π΅ Π’ΠΎΠΉΠ½Ρ‹». ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ «2» — случайноС ΠΌΠΈΠ³Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ²Π΅Ρ‚ΠΎΠ΄ΠΈΠΎΠ΄ΠΎΠ². ГСнСрация случайного Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ происходит Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Linux-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

1.ΠžΠ±Π·ΠΎΡ€ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°

linux ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ систСма

ΠšΡƒΡ€Ρ «ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы ΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ» рассчитан Π½Π° ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ с ΠΎΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ инструмСнтариСм ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ями Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм, Π² Ρ‡Π°ΡΡ‚ности ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ с ΡΠ΅ΠΌΠ΅ΠΉΡΡ‚Π²Π°ΠΌΠΈ Windows ΠΈ Linux.

Помимо тСорСтичСского ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Π² ΡΠ΅Π±Ρ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ рассмотрСниС истории развития ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм, ΠΈΡ… ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹, особСнностСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Ρ‚. Π΄., Π±Ρ‹Π»ΠΎ сдСлано 7 Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚, Ρ†Π΅Π»ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π»ΠΎ нСпосрСдствСнноС ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ с ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ устройством ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм упомянутых Π²Ρ‹ΡˆΠ΅ сСмСйств.

Π˜Ρ‚ΠΎΠ³ΠΎΠΌ курса стала курсовая Ρ€Π°Π±ΠΎΡ‚Π°, состоящая Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ‚Ρ€Ρ‘Ρ… прилоТСния для систСмы сСмСйства Linux, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π°ΠΊΠΎΠΉ язык программирования, ΠΊΠ°ΠΊ Π‘++.

2.ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

ЦСлью Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»Π° Π²Ρ‹Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π°Π²Ρ‹ΠΊΠΎΠ² программирования с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Π² Unix ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… систСмах.

Для осущСствлСния Π΄Π°Π½Π½ΠΎΠΉ Ρ†Π΅Π»ΠΈ Π±Ρ‹Π»ΠΈ поставлСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ:

— Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΎΠ΄Π½ΠΈ ΠΈΠ· Unix ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… систСм;

— ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Linux, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ свСтодиодами ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ CAPS, SCROLL, NUM lock Ρ‡Π΅Ρ€Π΅Π· Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ консоли tty (4) ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π΅ новогоднюю гирлянду Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… Ρ€Π°Π±ΠΎΡ‚Ρ‹: Π±Π΅Π³ΡƒΡ‰ΠΈΠ΅ ΠΎΠ³Π½ΠΈ, случайноС ΠΌΠ΅Ρ€Ρ†Π°Π½ΠΈΠ΅, Ρ†Π²Π΅Ρ‚ΠΎΠΌΡƒΠ·Ρ‹ΠΊΠ°;

— ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Linux, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Π»ΠΎΡ‚ΠΊΠΎΠΌ CD-ΠΏΡ€ΠΈΠ²ΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ cdrom ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π΅ нСсколько Π½ΠΎΠ²ΠΎΠ³ΠΎΠ΄Π½ΠΈΡ… Ρ‚Π°Π½Ρ†Π΅Π² ΠΈΠ· Π±Π°Π»Π΅Ρ‚Π° 'Π©Π΅Π»ΠΊΡƒΠ½Ρ‡ΠΈΠΊ': Ρ‚Π°Π½Π΅Ρ† Ρ„Π΅ΠΈ Π”Ρ€Π°ΠΆΠ΅, вальс Π¦Π²Π΅Ρ‚ΠΎΠ²;

— ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Linux, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ встроСнной ΠΏΠΈΡ‰Π°Π»ΠΊΠΎΠΉ Ρ‡Π΅Ρ€Π΅Π· Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ pcspkr ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π΅ нСсколько нСзамысловатых Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… эффСктов: сирСну, Π±Π°Ρ€Π°Π±Π°Π½Π½ΡƒΡŽ Π΄Ρ€ΠΎΠ±ΡŒ.

3.РСшСниС

Для выполнСния поставлСнных Ρ†Π΅Π»Π΅ΠΉ Π±Ρ‹Π»Π° Π²Ρ‹Π±Ρ€Π°Π½Π° опСрационная систСма Ubuntu 12.10. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ LinuxLive USB Creator 2.8.18 Π±Ρ‹Π»Π° создана Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹ΠΉ flash-Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ вСлась установка Π½ΠΎΠ²ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. ПослС измСнСния настроСк ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° Boot Π² BIOS, Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° установка Ubuntu ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ с ΡƒΠΆΠ΅ установлСнной Windows (которая послС всСго Π²Ρ‹ΡˆΠ΅ описанного пСрСстала Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ).

ИмСя срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π±Ρ‹Π»ΠΈ написаны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 1led. c, 2cd. c, 3musicbox.c.

4.ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния ΠΎ запускС

Для запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

1. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° (ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ctrl + Alt + T);

2. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ„Π°ΠΉΠ»Π° ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ:

ls (Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΏΠΎ ΠΏΠΎΡ€ΡΠ΄ΠΊΡƒ, ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ наличия Ρ„Π°ΠΉΠ»Π° Π² Π΄Π°Π½Π½ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ);

nano (Π²Ρ‹Π·ΠΎΠ² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅).

3. НСобходимо Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ стандартный компилятор, для этого Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

gcco program_name program_name.c, Π³Π΄Π΅:

gcc (ΠΈΠ»ΠΈ cc) — компилятор Π‘;

— ΠΎ — ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ для записи Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π² Ρ„Π°ΠΉΠ»;

program_name — имя Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ исполняСмого Ρ„Π°ΠΉΠ»Π°;

program_name.c — исходный Ρ„Π°ΠΉΠ» с Π½Π°ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ.

Для удобства Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ слСдуСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ~/bin Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /Home. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ· Π»ΡŽΠ±ΠΎΠΉ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ «mkdir».

4. Запуск осущСствляСтся с ΠΏΠΎΠΌΠΎΡˆΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

sudo ./program_name *parameters*, Π³Π΄Π΅

sudo — Ρ€Π΅ΠΆΠΈΠΌ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Π²ΠΎΠ΄Π° пароля;

./program_name — дирСктория ΠΈ ΠΈΠΌΡ исполняСмого Ρ„Π°ΠΉΠ»Π°;

*parameters* - пСрСчислСниС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

5. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Рис. 1. Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ коррСктности компиляции всСх 3-Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ 3-Ρ… исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ².

Рис.

5.Запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 1led c sudo ./led 1

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ «1» — ΠΏΠΎΠΎΡ‡Π΅Ρ€Ρ‘Π΄Π½ΠΎΠ΅ ΠΌΠΈΠ³Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ²Π΅Ρ‚ΠΎΠ΄ΠΈΠΎΠ΄ΠΎΠ² создаСт эффСкт гирлянды. Для этого Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» ΠΈΠ· 3 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ioctl (fd, KDSETLED, LED[j]) Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠΎΡ‡Π΅Ρ€Ρ‘Π΄Π½ΠΎ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ²Π΅Ρ‚ΠΎΠ΄ΠΈΠΎΠ΄ΠΎΠ². МиганиС прСдставляСт собой Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ (ioctl (fd, KDSETLED, 0)) свСтодиодов Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ 25 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ, послС Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ Π²Π½ΠΎΠ²ΡŒ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Ρƒ.

6.Запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 1led с sudo ./led 2

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ «2» — случайноС ΠΌΠΈΠ³Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ²Π΅Ρ‚ΠΎΠ΄ΠΈΠΎΠ΄ΠΎΠ². ГСнСрация случайного Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ происходит Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: ioctl (fd, KDSETLED, LED[rand ()%3]). ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ 25 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ, послС Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ Π²Π½ΠΎΠ²ΡŒ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Ρƒ.

ΠŸΡ€ΠΈ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠΌ Π²Π²ΠΎΠ΄Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π½ΠΎ сообщСниС ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠΈ, послС Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ Π²Π½ΠΎΠ²ΡŒ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Ρƒ.

Запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 2cd. c sudo ./cd Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС запуск производится Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Благодаря функциям открытия дисковода (ioctl (fd, CDROMEJECT, 0)) ΠΈ Π΅Π³ΠΎ закрытия (ioctl (fd, CDROMCLOSETRAY, 0)) рСализуСтся ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ «Ρ‚Π°Π½Ρ†Π°» ΠΏΠΎΠ΄ саундтрСк ΠΊ Ρ„ΠΈΠ»ΡŒΠΌΡƒ «Π—Π²Π΅Π·Π΄Π½Ρ‹Π΅ Π’ΠΎΠΉΠ½Ρ‹».

Запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 3musicbox. c sudo modprobe pcspkr sudo ./ music

ΠŸΠ΅Ρ€Π΅Π΄ запуском ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ pcspkr — спикСр ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. ПослС запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ воспроизводятся ΠΌΠ΅Π»ΠΎΠ΄ΠΈΠΈ, опрСдСляСмыС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ:

1 — эффСкт сирСны (нарастаниС ΠΈ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΠ΅ частоты Π·Π²ΡƒΡ‡Π°Π½ΠΈΠ΅ спикСра)

2 — эффСкт Π±Π°Ρ€Π°Π±Π°Π½Π½ΠΎΠΉ Π΄Ρ€ΠΎΠ±ΠΈ

3 — воспроизвСдСниС ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ «Π’ Π»Π΅ΡΡƒ Ρ€ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ Ρ‘Π»ΠΎΡ‡ΠΊΠ°».

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΌΡ‹ Ρ‚Сстировали ΠΌΠ΅Π»ΠΎΠ΄ΠΈΠΈ Π² Windows MVS с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ beep. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π»ΠΈ ΠΈΠ· 10-ΠΎΠΉ систСмы (с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ beep) счислСния Π² 16-ΡƒΡŽ (Π² Π½Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ: 1 193 180/frequency. Π“Π΄Π΅ Π±Ρ‹Π»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ‹ ΡΠ²Π½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π»ΠΈ Π² 16-ΡƒΡŽ систСму счислСния. Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ, ΡƒΠΌΠ½ΠΎΠΆΠΈΠ² Π½Π° 1000. ПодобноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ взято, послС прочтСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„ΠΎΡ€ΡƒΠΌΠ°: http://ubuntuforums.org/showthread.php?t=873 679.

ВСстированиС Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ тСстированиС ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΏΡƒΡ‚Ρ‘ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ВсС Ρ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ся.

Π’Π°ΠΊΠΆΠ΅ использовался трассировщик:

sudo strace program_name

Рис. 2. Π§Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… послС трассировки ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Π² Ρ…ΠΎΠ΄Π΅ исполнСния ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, сначала открываСтся Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ дСскриптор Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ дСскриптор — это Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число. Когда создаСтся Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, ядро Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ процСссу, ΡΠΎΠ·Π΄Π°Π²ΡˆΠ΅ΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ дСскриптор (Wikipedia.org)., Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€Π°Π²Π½ΠΎ 3, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. Π”Π°Π»Π΅Π΅ strcmp — ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ioctl — систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ 19 250 ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π² 16-ΠΎΠΉ систСмС счислСния. ВсС описанныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π΅Ρ€Π½ΡƒΠ»ΠΈ 0, Ρ‡Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Для Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: сначала запускаСтся ΠΌΡƒΠ·Ρ‹ΠΊΠ°, Π·Π°Ρ‚Π΅ΠΌ открываСтся дисковод, ΠΏΠΎΡ‚ΠΎΠΌ воспроизводится Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π΅ΠΌΠ»ΠΎΠ΄ΠΈΠΈ, Π·Π°Ρ‚Π΅ΠΌ дисковод закрываСтся ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π’Ρ€Π΅Ρ‚ΡŒΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π²ΠΎ Π²ΡΠ΅Ρ… 3-Ρ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ….

Для экспСримСнта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΏΡƒΡΠΊΠ°Π»Π°ΡΡŒ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π±Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ закрытия cd Π»ΠΎΡ‚ΠΊΠ° ΠΈ Π±Π΅Π· Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° для спикСра. Π‘Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

Рис. 3. Π§Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… послС трассировки Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π±Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ закрытия cd Π»ΠΎΡ‚ΠΊΠ° ΠΈ Π±Π΅Π· Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° для спикСра.

Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΡΠ»ΡƒΡ‡Π°ΡΡ… обращСния ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ функциям, возвращаСтся -1, послС Ρ‡Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выполняСтся дальшС. ΠŸΡ€ΠΈ отсутствии Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ устройство (Ρ‡Ρ‚ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ). ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρƒ с Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, систСмы Π²Ρ‹Π΄Π°Ρ‘Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ.

7.Анализ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²

Π‘Ρ‹Π»Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ установлСна опСрационная систСма 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=873 679

10.man — (manual) — ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π·ΠΎΠ²Π° справки Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» (manual)

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

1. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° 1led. c

#include

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 («%sn» ," 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 (100 000);

}

}

}

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

{

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

{

ioctl (fd, KDSETLED, 0);

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

usleep (100 000);

}

}

close (fd);

return 0;}

2. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° 2cd. c

#include

#include

#include

#include

#include

#include

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]=1 193 180/frequency[i]; }

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

usleep (1000*duration[i]);

}

close (fd);

return 0;}

3. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° 3musicbox. c

#include

#include

#include

#include

#include

#include

#include

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 («%sn» ," Error. Rewrite parametrs!");

return 2; }

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

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

{int frequency = 0×0384;

int deltafreq = 0×000A;

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

{frequency=frequency+deltafreq;

ioctl (fd, KIOCSOUND, frequency);

usleep (10 000);}

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

{

frequency=frequency-deltafreq;

ioctl (fd, KIOCSOUND, frequency);

usleep (10 000);

}

}

}

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 = 0×0064;

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]=1 193 180/frequency[i]; }

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

usleep (500 000);

}

}

ioctl (fd, KIOCSOUND, 0);

close (fd);return 0;}

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ