С чего начинается программирование...

читать лучше с начала!

На сайті розглядаються основи роботи з мультимедійною інформацією на персональному комп'ютері. Описано ряд програм для закису, обробки й відтворення звуку й зображення.

Представлено деякі Wіndows-програми комунікацій реального часу ( ІP-Телефонії).

Також сайт присвячен розробці власних програм для роботи з аудио й відео, передачі звукової й візуальної інформації в локальних мережах і Інтернеті.

Серед наших користувачів, як правило, користувачі комп'ютера в дома й в офіса, так і на починаючих розроблювачів програмного забезпечення - ми даємо основи програмування в середовищі Borland C++ Buіlder. Наша аудиторія - це, перш за все, школярі старших класів, студенти і широке коло людей, що просто використовують комп'ютер вдома й на роботі.

ПОЯСНЕННЯ



      Першою справою chkset инициализирует дві змінні - FORM і SORT. Змінна FORM містить команду для видачі результату роботи команди find, а змінна SORT - команду, що визначає, що потрібно сортировать.
      У рядку 7 перевіряється, чи є перший позиційний параметр опцією. Якщо так, то оператор case (рядка 8-14) дивиться, яка це опція. Якщо це опція "-l", то підготовляється команда для распечатки результату (це ми обговоримо пізніше). Команда для утиліти sort формируется так, щоб сортування йшло по полю власника. Опція вбирається з командного рядка, тому що всі наступні аргументи повинні бути каталогами й ми захочемо одержати до них доступ за допомогою "$#". Якщо попаслася опція, відмінна від "-l", те це помилка, видається повідомлення про помилку (рядок 12), і командний файл завершується.
      Якщо залишилося більше нуля аргументів, коли ми попадаємо в рядок 17, то вони перевіряються в циклі, щоб переконатися, що всі вони є каталогами. Якщо це не каталоги, на стандартний пристрій регістрации помилок видається повідомлення про помилку й командний файл завершується.
      Якщо є параметри (тобто каталоги), те в рядку 18 у періменную SRC заносяться всі каталоги. Якщо ж параметрів ні, то в періменную SRC заноситься значення "/", тобто кореневий каталог, щоб обеспечить яку мається на увазі стартову крапку для пошуку.
      Вся робота цього командного файлу виконується фактично в операторе find. Команда find допускає множинну вказівку каталогів, які надходять у результаті читання їх з командного рядка й занесения в змінну SRC.
      Після того як ми вказали команді find, звідки починати пошук, ми вказуємо їй, що потрібно шукати. У цьому випадку нас цікавлять всі файли, які мають включений біт установки користувальницького або групового ідентифікатора. Ми пояснюємо це команді find шляхом указуния прав доступу, які потрібно шукати. Рядок "-perm -4000" означает пошук всіх файлів, що мають права доступу із включеним бітом установки користувальницького ідентифікатора й з будь-якими іншими включенными бітами. Ви можете розуміти цей запис як застосування символів -замінників - 4???. Ми шукаємо як установку користувальницького идентификатора (-4000), так і установку групового ідентифікатора (-2000), тому два рядки прав доступу з'єднані опцією -o, що означає "or" ("або"). (Більше повний опис прав доступу в символічній і восьмеричной формі наведене в chmod(1).)
      Наступне завдання - додати рядок, збережений у змінної FORM, у командний рядок. Якщо опція -l не була використана, то в змінний FORM зберігається рядок "-print", а це значить, що find буде печатать маршрутні імена знайдених файлів. Якщо ж -l використовувалася, то змінна FORM містить рядок "-exec ls -ld {} ;". Опція -exec це дуже гнучка опція команди find, що дозволяє застосувати будь-які доманды, які за нею ідуть, до кожного знайденого файлу. У даному випадку ці команди виконують роздруківку в довгому форматі (-l), причим для кожного каталогу (-d) виводиться тільки його ім'я (а не містимоє). Саме тут відбуваються найбільші витрати ресурсів центрального процесора, тому що для опції -l потрібен системний виклик stat. Через те, що для кожного файлу потрібна команда ls, вона кожний раз завантажується на згадку й виконується. Виробляється також доступ до індексному дескриптору файлу на диску. Це приводить до більшого накладным витратам.
      Потім весь потік даних пропускається через утиліту sort. На самом справі ми хочемо зробити сортування по восьмому полю (ви можете провірити це, виконавши команду "ls -l" і вивчивши її результат). Утиліта sort ПРОПУСКАЄ зазначене число полів, починаючи з поля 1, що є за замовчуванням стартовою крапкою, тому використання запису +7 ознасподівається перехід до восьмого поля, яким є ім'я файлу.

[...]
Початок
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160] [161] [162] [163] [164] [165] [166] [167] [168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178] [179] [180] [181] [182] [183] [184] [185] [186] [187] [188] [189] [190] [191] [192] [193] [194] [195] [196] [197] [198] [199] [200] [201] [202] [203] [204] [205] [206] [207] [208] [209] [210] [211] [212] [213] [214] [215] [216] [217] [218] [219] [220] [221] [222] [223] [224] [225] [226] [227] [228] [229] [230] [231] [232] [233] [234] [235] [236] [237] [238] [239] [240] [241] [242] [243] [244] [245] [246] [247] [248] [249] [250] [251] [252] [253] [254] [255] [256] [257] [258] [259] [260] [261] [262] [263] [264] [265] [266] [267] [268] [269] [270] [271] [272] [273] [274] [275] [276] [277] [278] [279] [280] [281] [282] [283] [284] [285] [286] [287] [288] [289] [290] [291] [292] [293] [294] [295] [296] [297] [298] [299] [300] [301] [302] [303] [304] [305] [306] [307] [308] [309] [310] [311] [312] [313] [314] [315] [316] [317] [318] [319] [320] [321] [322] [323] [324] [325] [326] [327] [328] [329] [330] [331] [332] [333] [334] [335] [336] [337] [338] [339] [340] [341] [342] [343] [344] [345] [346] [347] [348] [349] [350] [351] [352] [353] [354] [355] [356] [357] [358] [359] [360] [361] [362] [363] [364] [365] [366] [367] [368] [369] [370] [371] [372] [373] [374] [375] [376] [377] [378] [379] [380] [381] [382] [383] [384] [385] [386] [387] [388] [389] [390] [391] [392] [393] [394] [395] [396] [397] [398] [399] [400] [401] [402] [403] [404] [405] [406] [407] [408] [409] [410] [411] [412] [413] [414] [415] [416] [417] [418] [419] [420] [421] [422] [423] [424] [425] [426] [427] [428] [429] [430] [431] [432] [433] [434] [435] [436] [437] [438] [439] [440]