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

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

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

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

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

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

ПРИКЛАД ВИКЛИКУ


b cg f.c

      Компілювати вихідний файл у фоновому режимі, де cg - командна
      рядок компілятора, описана в главі 10.

      ТЕКСТ ПРОГРАМИ b
1 : 2 # @(#) b v1.0 Background task handler Author: Russ Sage 2а Оброблювач фонових завдань
4 ($@; echo "^G\ndone\n${PS1}\c") &


      ОПИС

      НАВІЩО НАМ ПОТРІБНИЙ b?

      Як ви бачили в останньому розділі, Bourne shell дає можливість запускати завдання у фоновому режимі виконання. Це робить символ &. Що же насправді відбувається, коли ми запускаємо що-небудь у фоновому режимі? Породжується ще один shell, що повинен виконати свою власний командний рядок. Після того, як всієї його команди выполнятся, він завершується. Ви можете визначити фонові завдання по результату роботи команди ps. Ці завдання виглядають як інтерпретатори shell, запущені з вашого термінала, однак їхнім власником, або батьківським процесом у дійсності є команда init, а не ваш регістрационный shell (це справедливо тільки для shell, до яких застосована команда nohup). Інтерпретатори shell, до яких не застосовувалася nohup, належать вашому реєстраційному shell. Нижче приводиться приклад роздруківки команди ps для фонових завдань. Командою для виконання у фоновому режимі була:
while :;do date; done &

      Команда ps показує мій реєстраційний shell (PID=32), уведенийную мною командний рядок для виконання у фоновому режимі (PID=419) і shell, що виконує цикл while (PID=449).

| | UID PID PPID C STIME TTY TIME COMMAND | | root 0 0 0 Dec 31 ? 0:03 swapper | root 1 0 0 Dec 31 ? 0:02/etc/init | russ 32 1 0 14:18:36 03 1:26 -shV | russ 419 32 0 15:30:31 03 0:02 -shV | russ 449 419 2 15:30:31 03 0:02 -shV |

      Нижче наведений лістинг команди ps, що показує фоновий shell, що належить процесу init. Він був отриманий командою "b ps -ef", де b - утиліта, що буде розглянута далі. Як бачите, останній процес 471 є фоновий shell, що належить процесу 1, яким є init, а не мій реєстраційний shell (PID=32).

| | UID PID PPID C STIME TTY TIME COMMAND | root 0 0 1 Dec 31 ? 0:04 swapper | root 1 0 0 Dec 31 ? 0:02/etc/init | russ 32 1 1 14:18:36 03 1:30 -shV | russ 472 471 5 15:46:46 03 0:12 ps -ef | russ 471 1 0 15:46:46 03 0:00 -shV |

      До чого все це приводить? Коли ми використовуємо фонові завдання, ми повинні миритися з "нерозбірливістю" при керуванні асинхронними процессами. Які ці недоліки?
      По-перше, ми ніколи не знаємо моменту завершення фонових завдань. Єдиний спосіб визначити момент завершення таких завдань - проверка результатів у якому-небудь файлі або деякій роботі, виконаної завданням, або використання команди ps і постійне спостереження за тим, коли процес завершиться. Таке спостереження за допомогою команди ps - не найкращий спосіб, оскільки ps займає багато процесорного часу і дуже повільно працює.
      Другий неакуратний момент - це символ запрошення після видачі на ваш екран результату з фонового завдання. Після того як виданий результат з фонового завдання, ваш реєстраційний shell очікує уведення доманды, але запрошення може й не бути, оскільки воно було вилучено з екрана деяким іншим повідомленням. Ви можете очікувати запрошення целый день, але воно ніколи не з'явиться, оскільки воно вже було виведено на екран. Ви просто повинні знати, що shell чекає вашу команду.
      Нам необхідно інструментальний засіб, що повідомляє нас про завершенні фонового завдання, а також відновлює наш екран після видачі на нього яких-небудь результатів. Чи можемо ми сказати, чи виконувала висновок на екран фонове чи завдання ні? Ні, тому ми повинні жорстко запрограмувати відновлення екрана в програмі.


      ЩО РОБИТЬ b?

      Командний файл b - це механізм, що допомагає у виконанні фонових завдань. Він запускає наші фонові завдання. По завершенні він відображає на екран слово "done" і потім повторно виводить символ-приглашение shell.
      Даний засіб не має опцій і перевірки на наявність помилок. Проработчик фонових завдань фактично виконує командний рядок, що ми йому передаємо, і наступну обробку. Відзначимо, що для видачі на екран вашого символу запрошення, ви повинні експортувати змінну PS1 з вашого поточного середовища. Це може дотримуватися не на всіх машинах, оскільки кожна система UNIX має свої особливості. У системі XENIX змінна PS1 не передається, можливо через те, що це shell, доторый викликає інший shell у фоновому режимі. Якщо ви скажете "sh" в інтерактивному режимі, він буде передане як запрошення. Система UNIX так прекрасна й дивна!

[...]
Початок
[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]