Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 195

Автор НСйл ΠœΡΡ‚ΡŒΡŽ

 password_entry->setEchoMode(QLineEdit::Password);

 grid->addWidget(username_entry, 0, 1, 0);

 grid->addWidget(passwordentry, 1, 1, 0);

 QPushButton* button = new QPushButton("Ok", this, "button");

 grid->addWidget(button, 2, 1, Qt::AlignRight);

 connect (button, SIGNAL(clicked()), this, SLOT(accept()));

}


QString LogonDialog::getUsername() {

 if (username_entry == NULL) return NULL;

 return username_entry->text();

}


QString LogonDialog::getPassword() {

 if (password_entry == NULL) return NULL;

 return password_entry->text();

}

На рис. 17.15 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ.

Рис. 17.15 

main.cpp

ЕдинствСнный ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΉΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ β€” функция main, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚Π΅ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» main.cpp.

1. Π’ Ρ„Π°ΠΉΠ»Π΅ main.cpp Π²Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΎΠΊΠ½ΠΎ LogonDialog ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΡƒΡŽ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ database_start. Если рСгистрация оказалась Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΉ, Π²Ρ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚Π΅ ΠΎΠΊΠ½ΠΎ QMessageBox ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ LogonDialog проситС Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ подтвСрТдСния Π΅Π³ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π°.

#include "MainWindow.h"

#include "app_mysql.h"

#include "LogonDialog.h"

#include <kde/kapp.h>

#include <qmessagebox.h>


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

 char username[100];

 char password[100];

 KApplication a(argc, argv, "cdapp");

 LogonDialog *dialog = new LogonDialog();

 while (1) {

  if (dialog->exec() == QDialog::Accepted) {

   strcpy(username, dialog->getUsername());

   strcpy(password, dialog->getPassword());

   if (database_start(username, password)) break;

   QMessageBox::information(0, "Title",

    "Could not Logon: Check username and/or password",

    QMessageBox::Ok);

   continue;

  } else {

   if (QMessageBox:information(0, "Title",

    "Are you sure you want to quit?", QMessageBox::Yes,

    QMessageBox::No) == QMessageBox::Yes) {

    return 0;

   }

  }

 }

 delete dialog;

 MainWindow *window = new MainWindow("Cd App");

 window->resize(600, 400);

 a.setMainWidget(window);

 window->show();

 return a.exec();

}

2. ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ pro-Ρ„Π°ΠΉΠ» для ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ qmake. НазовитС Π΅Π³ΠΎ cdapp.pro:

TARGET = app

MOC_DIR = moc

OBJECTS_DIR = obj

INCLUDEPATH = /usr/include/kde /usr/include/mysql

QMAKE_LIBDIR_X11 += -/usr/lib

QMAKE_LIBDIR_X11 += /usr/lib/mysql

QMAKE_LIBS_X11 += -lkdeui -lkdecore -lmysqlclient

SOURCES = MainWindow.cpp main.cpp app_mysql.cpp AddCdDialog.cpp LogonDialog.cpp

HEADERS = MainWindow.h app_mysql.h AddCdDialog.h LogonDialog.h

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ позволяСт Π²Π°ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡ…ΠΈΡ‚Ρ€ΠΈΡ‚ΡŒ, просто ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π² Ρ„Π°ΠΉΠ» app_mysql.c Π² Ρ„Π°ΠΉΠ» app_mysql.cpp; Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ исходный Ρ„Π°ΠΉΠ» Π½Π° языкС Π‘++. Π­Ρ‚ΠΎ устраняСт нСбольшоС услоТнСниС, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ рСдактирования связСй ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π½Π° языкС Π‘ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π½Π° языкС Π‘++,

$ qmake cdapp.pro -ΠΎ Makefile

$ make

$ ./Π°Ρ€Ρ€

Если всС Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дисков!

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ KDE/Qt, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² интСрфСйсС MySQL, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΡ€ΠΎΠΆΠ΅ΠΊ Π² ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-диски ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дисков. Π’Π°ΠΌ понадобятся Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π°, Π½ΠΎΠ²Ρ‹Π΅ элСмСнты мСню ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов, придСтся Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ!

РСзюмС 

Π’ этой Π³Π»Π°Π²Π΅ Π²Ρ‹ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ графичСского ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Qt ΠΈ рассмотрСли Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ графичСской срСды KDE Π² дСйствии. Π’Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Qt β€” это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π° языкС Π‘++, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‰Π°Ρ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ "сигнал/слот" для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ программирования, управляСмого событиями. Π’Ρ‹ познакомились с основными Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ Qt ΠΈ написали нСсколько ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ-ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² для дСмонстрации ΠΈΡ… практичСского примСнСния. Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ срСдствами KDE/Qt Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ графичСский ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс вашСго прилоТСния для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дисками. 

Π“Π»Π°Π²Π° 18

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρ‹ Linux

ОБ Linux появилась сначала Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ ядро систСмы. К соТалСнию, ядро само ΠΏΠΎ сСбС Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ; ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Π½ΡƒΠΆΠ½Π° рСгистрация, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, компиляция Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Ρ‚.Π΄. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ систСму ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GNU Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Ρ€Π°Π·Π½Ρ‹Π΅ срСдства. Они прСдставляли собой ΠΊΠ»ΠΎΠ½Ρ‹ ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΈΠΌΠ΅Π²ΡˆΠΈΡ…ΡΡ Π² UNIX ΠΈ UNIX-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… систСмах Ρ‚ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠŸΡ€Π΅Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ систСмы Linux Π² ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ UNIX-систСмы установило ΠΏΠ΅Ρ€Π²Ρ‹Π΅ стандарты для Linux, прСдоставляя программистам Π½Π° языкС Π‘ Π·Π½Π°ΠΊΠΎΠΌΡƒΡŽ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ срСду.

Π Π°Π·Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ОБ UNIX (Π° ΠΏΠΎΠ·Π΄Π½Π΅Π΅ Linux) вставляли собствСнныС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π»ΠΈ Π² состав систСмы, ΠΈ структура ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΈΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм Ρ‚ΠΎΠΆΠ΅ слСгка ΠΎΡ‚Π»ΠΈΡ‡Π°Π»Π°ΡΡŒ. ВсС это затрудняло созданиС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, способных Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… систСмах. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, программист Π½Π΅ ΠΌΠΎΠ³ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности систСмы Π±Ρ‹Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ мСстС.

Π‘Ρ‚Π°Π»ΠΎ ясно, Ρ‡Ρ‚ΠΎ для сохранСния подобия UNIX-систСм Π½ΡƒΠΆΠ½Π° стандартизация, ΠΈ такая Ρ€Π°Π±ΠΎΡ‚Π° сСйчас вСдСтся.

Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ стандарты двигались Π²ΠΏΠ΅Ρ€Π΅Π΄, Π½ΠΎ ΠΈ ОБ Linux с Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΡΡŽΡ‰Π΅ΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π»Π°ΡΡŒ сообщСством, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½Π½Ρ‹ΠΌ коммСрчСскими организациями, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Red Hat ΠΈ Canonical, ΠΈ Π΄Π°ΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Π½Π΅-Linux, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠ΅ΠΉ IBM. По ΠΌΠ΅Ρ€Π΅ развития Linux наряду с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ компиляторов gcc Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ слСдила Π·Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ стандартами, Π½ΠΎ ΠΈ опрСдСляла Π½ΠΎΠ²Ρ‹Π΅ стандарты, Ссли ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈΡΡŒ нСэффСктивными. Π’ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ОБ Linux ΠΈ связанныС с нСю ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ срСдства ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ всС Π±ΠΎΠ»Π΅Π΅ популярными, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ UNIX-систСм Π½Π°Ρ‡Π°Π»ΠΈ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² свои ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ совмСстимыми с ОБ Linux.

Π’ этой Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ‹ собираСмся Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ стандарты Linux, обращая Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°Ρ‚Π΅ области, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ прилоТСния, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π² Π²Π°ΡˆΠΈΡ… систСмах Linux послС ΠΈΡ… обновлСния, Π½ΠΎ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ дистрибутивы Linux, Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ Π² UNIX-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ систСмы, обСспСчивая, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, совмСстноС использованиС Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Π’ особСнности ΠΌΡ‹ коснСмся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π΅ΠΌ:

β–‘ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ языка программирования Π‘;

β–‘ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρ‹ UNIX, Π² особСнности POSIX, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ IEEE, ΠΈ стандарт Single UNIX Specification, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Open Group;

β–‘ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Free Standards Group, Π² особСнности Linux Standard Base, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΌΠ°ΠΊΠ΅Ρ‚ стандартной Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы Linux.

Π₯ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ для знакомства со стандартами, относящимися ΠΊ ОБ Linux, слуТит стандарт Linux Standard Base (LSB), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° Web- сайтС Linux Foundation ΠΏΠΎ адрСсу http://www.linux-foundation.org/.

ΠœΡ‹ Π½Π΅ собираСмся ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ содСрТаниС стандартов, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΌΡƒ сравнимы с Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΎΠΉ. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ вашС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ стандарты, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… слСдуСт Π·Π½Π°Ρ‚ΡŒ, Π΄Π°Ρ‚ΡŒ Π²Π°ΠΌ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠ΅ историчСскиС свСдСния ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²ΠΈΠ²Π°Π»ΠΈΡΡŒ эти стандарты, ΠΈ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈ написании Π²Π°ΡˆΠΈΡ… собствСнных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Π―Π·Ρ‹ΠΊ программирования Π‘

Π―Π·Ρ‹ΠΊ программирования Π‘ β€” de facto язык программирования ОБ Linux, поэтому, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘ для Linux, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Π΅Π³ΠΎ истоках, ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ мСнялся язык, ΠΈ, Ρ‡Ρ‚ΠΎ особСнно Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° соотвСтствиС стандартам.

ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΡƒΡ€ΠΎΠΊ истории

Π’Π΅ΠΌ, ΠΊΡ‚ΠΎ Π½Π΅ слишком Π»ΡŽΠ±ΠΈΡ‚ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ, Π½Π΅ стоит Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ: эта ΠΊΠ½ΠΈΠ³Π° ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Π° Π½Π΅ ΠΎΠ± истории, поэтому ΠΎΠ±Π·ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ.

Π―Π·Ρ‹ΠΊ программирования Π‘ появился Π² Π½Π°Ρ‡Π°Π»Π΅ 1970-Ρ… Π³ΠΎΠ΄ΠΎΠ² ΠΈ Π±Ρ‹Π» основан отчасти Π½Π° Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½Π΅ΠΌ языкС программирования BCPL ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΡ… для языка Π’. ДСннис Π ΠΈΡ‚Ρ‡ΠΈ (Dennis М. Ritchie) написал руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ для языка Π² 1974 Π³., ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² это ΠΆΠ΅ врСмя Π‘ Π±Ρ‹Π» использован ΠΊΠ°ΠΊ язык программирования для ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ядра UNIX Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… PDP-11. Π’ 1978 Π³. Π‘Ρ€Π°ΠΉΠ°Π½ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½ (Brian W. Kernighan) ΠΈ Π ΠΈΡ‚Ρ‡ΠΈ написали классичСскоС руководство ΠΏΠΎ, языку "The Π‘ Programming Language" ("Π―Π·Ρ‹ΠΊ программирования Π‘").

ΠžΡ‡Π΅Π½ΡŒ быстро язык ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π» Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ, ΠΎΠ±ΡƒΡΠ»ΠΎΠ²Π»Π΅Π½Π½ΡƒΡŽ, нСсомнСнно, отчасти быстрым ростом популярности UNlX-систСм, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ своими возмоТностями ΠΈ понятным синтаксисом. Бинтаксис языка Π‘ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ согласованно, Π½ΠΎ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ измСнялся всС большС ΠΈ большС ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ описаниСм, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π² ΠΊΠ½ΠΈΠ³Π΅, ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΎΡΡŒ ясно, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ΅Π½ стандарт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ соотвСтствовал Π±Ρ‹ соврСмСнному ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΡŽ ΠΈ Π±Ρ‹Π» Π±ΠΎΠ»Π΅Π΅ строгим.

Π’ 1983 Π³. ANSI (American National Standards Institute, АмСриканский институт стандартов) основал ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ стандартов X3J11 для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‡Π΅Ρ‚ΠΊΠΎΠ³ΠΎ ΠΈ строгого опрСдСлСния языка. ΠŸΠΎΠΏΡƒΡ‚Π½ΠΎ ΠΎΠ±Π΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ вносили Π² язык Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния, Π² особСнности придавая Π΅ΠΌΡƒ Π΄ΠΎΠ»Π³ΠΎΠΆΠ΄Π°Π½Π½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π½ΠΎ Π² основном ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ просто вносил ΡΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ логичСскоС обоснованиС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ опрСдСлСния Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ составляло ΠΎΠ±Ρ‰Π΅ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ языка. ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ стандарт Π±Ρ‹Π» ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π² 1989 Π³. ΠΊΠ°ΠΊ ANSI Standard Programming Language Π‘, X3.159-1989 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎ C89, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΡ‹ΠΉ C90. (Π­Ρ‚ΠΎΡ‚ послСдний прСвратился Π² стандарт ISO/IEC 9899:1990, Programming Languages β€” Π‘. Оба стандарта Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹.)