The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Каталог документации / Раздел "Программирование, языки" / Оглавление документа
next up previous contents
Next: Структура flock Up: Блокировка файлов. Previous: Блокировка файлов.   Contents

Необходимость блокировки.

Одной из проблем при организации параллельного доступа к файлам из нескольких процессов является непредсказуемость порядка доступа в файл. В следующем примере два процесса записывают в файл строку символов по одному символу (рис. 14):

#include <stdio.h>

#include <fcntl.h>

#include <sys/types.h>

#include <sys/stat.h>

 

int main()

{

  int fd;

  int x,y;

  pid_t pid;

  unlink("/tmp/file"); /*Удаляем предыдущий файл*/

  fd=open("/tmp/file", O_WRONLY|O_CREAT, 0777);

  if(fd==-1)

  {

    perror("open : ");

    exit(0);

  }

  if((pid=fork()) == -1)

  {

    perror("fork :");

    exit(0);

  }

  else if(pid)

  { /*Родительский процесс*/

    while(1)

    {

      for(x=0; x<10; x++){

      sleep(1);

      write(fd,(char *)"x",1);

    }

  break;

  }

  else

  { /*Процесс-потомок*/

    while(1)

    {

      for(y=0; y<10; y++){

      sleep(1);

      write(fd,(char *)"X",1);

    }

    break;

  }

return 0;

}

Рис. 14. Параллельная запись в файл.

После отработки этой программы содержимое файла ``/tmp/file'' может быть следующим:

XxxXXxxXXxxXXxxXXxx
Для хранения данных предпочтительнее было бы, чтобы каждый процесс писал свои данные в отдельную часть файла. При этом содержимое файла "/tmp/file" должно быть следующим:

xxxxxxxxxxXXXXXXXXXX
Для разделения данных в файле используется функция:

int fcntl(int fd, int сommand,.../*struct flock *flockptr*/);



2003-12-09

ПОДПИШИСЬ НА ЖУРНАЛ Linux Format 2012!

Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

Каждый, кто оформит подписку, получает бонусы и подарки- объёмные наклейки на системный блок, диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

Оформить подписку на год


  Закладки на сайте
  Проследить за страницей
Created 1996-2012 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
RUNNet TopList