ні операції read (Відсутній контроль виникнення помилок при виконанні операції write). Потім управління з підпрограми copy повертається в основну програму і запускається операція exit з кодом стану 0 в якості параметра, що вказує на успішне завершення виконання програми.
Програма копіює будь-які файли, вказані при її виклик як аргумен-тів, за умови, що дозволено відкриття існуючого файлу і створення нового файлу. Файл може включати в себе як текст, який може бути виведений на друкувальний пристрій, наприклад, вихідний текст програми, так і символи, не виведені на друк, навіть саму програму. Таким чином, обидва виклику:
copy copy.c newcopy.c
copy copy newcopy
є допустимими. Існуючий файл також може бути каталогом. Наприклад, за викликом:
copy. dircontents
копіюється вміст поточного каталогу, позначеного символом ".", в звичайний файл "dircontents"; інформація в новому файлі збігається, аж до кожного байта, з вмістом каталогу, тільки цей файл звичайного типу (для створення нового каталогу призначена операція mknod). Нарешті, будь-який з файлів
може бути файлом пристрою. Наприклад, програма, викликана наступним чином:
# include
char buffer [2048];
int version = 1;
main (argc, argv)
int argc;
char * argv [];
{
int fdold, fdnew;
if (argc! = 3)
{
printf ("need 2 arguments for copy programn);
exit (1);
}
fdold = open (argv [1], O_RDONLY)/* відкрити вихідний файл тільки для читання */
if (fdold == -1)
{
printf ("cannot open file % Sn ", argv [1]);
exit (1);
}
fdnew = creat (argv [2], 0666);/* створити новий файл з дозволом читання і запису для всіх
користувачів */
if (fdnew == -1)
{
printf ("cannot create file% sn ", argv [2]);
exit (1);
}
copy (fdold, fdnew);
exit (0);
}
copy (old, new)
int old, new;
{
int count;
while ((count = read (old, buffer, sizeof (buffer)))> 0)
write (new, buffer, count);
}
Малюнок 1.3. Програма копіювання файлу
copy/dev/tty terminalread
читає символи, введені з терміналу (файл/dev/tty відповідає терміналу
користувача), і копіює їх у файл terminalread, завершуючи роботу тільки в
тому випадку, якщо користувач натисне . Схожа форма запуску програми:
copy/dev/tty/dev/tty
викликає читання символів з терміналу та їх копіювання назад на термінал.
3.2 середу виконання процесів
Програмою називається виконуваний файл, а процесом називається послідовність операцій програми або частина програми при її виконанні. В системі UNIX може одночасно виконуватися безліч процесів (Цю особливість іноді називають Мультипрограмування або багатозадачним режимом),
при чому...