Новые книги

Как найти новых клиентов? Этот вопрос, пожалуй, самый важный для любого бизнеса, потому что если у компании недостаточно потребителей, то все остальное уже не так существенно. И наоборот, постоянный поток клиентов способен быстро привести почти любой проект к успеху даже в условиях сильной конкуренции, кризиса и любой иной нестабильности. Проблем с клиентами добавляет быстро меняющаяся рыночная ситуация во всех нишах и отраслях – изменяются вкусы и пристрастия потребителей, мотивы при выборе товаров и услуг и их поставщиков, меняются, в конце концов, технологии и привычные уровни цен. То, что еще вчера в маркетинге давало отличные результаты, сегодня перестает работать и требует перенастройки. Эффективный подход к проблеме – это не «лечение» нежелательных последствий, а устранение причин «заболевания». В случае с маркетингом и продажами таким кардинальным средством является системный подход, то есть выстраивание системы постоянного привлечения новых клиентов. С помощью такой системы можно управлять скоростью притока новых клиентов, пользоваться «тормозом», «газом» и другими элементами. Она позволит контролировать все процессы и в случае необходимости масштабироваться с ростом бизнеса. Есть проверенные инструменты, взяв и настроив которые можно запустить ваш «генератор новых клиентов». Рекомендуется топ-менеджерам, руководителям и владельцам предприятий малого и среднего бизнеса, руководителям служб сбыта.
По статистике у каждого второго пользователя сети Интернет есть свой сайт или страница в соцсетях. И все владельцы таких сайтов делятся на две категории – тех, кто зарабатывает с помощью своего сайта, и тех, кто не зарабатывает или даже теряет свои деньги. Вы можете создать прекрасный сайт, можете им гордиться, можете рассказывать, что ваша компания существует на рынке уже двадцать лет… Но парадокс в том, что вы должны создать сайт не для себя, а для своих клиентов, иначе не сможете убедить посетителя сайта купить товар или услугу именно у вас.

Мы поможем вам создать продающий сайт – реального менеджера-продавца, круглосуточно продающего ваши товары и услуги, который привлечет бесплатных посетителей на ваш сайт и увеличит базу потенциальных клиентов, создаст продающий контент и автоматические воронки продаж, внедрит системы оплаты, приема и перевода платежей.

5.7 СОЗДАНИЕ ФАЙЛА

 

5.7 СОЗДАНИЕ ФАЙЛА

Системная функция open дает процессу доступ к существующему файлу, а системная функция creat создает в системе новый файл. Синтаксис вызова системной функции creat:

   fd = creat(pathname,modes);

где переменные pathname, modes и fd имеют тот же смысл, что и в системной функции open. Если прежде такого файла не существовало, ядро создает новый файл с указанным именем и указанными правами доступа к нему; если же такой файл уже существовал, ядро усекает файл (освобождает все существующие блоки данных и устанавливает размер файла равным 0) при наличии соответствующих прав доступа к нему (***). На Рисунке 5.12 приведен алгоритм создания файла.


     алгоритм creat                                             
     входная информация:  имя файла                             
                          установки прав доступа к файлу        
     выходная информация: дескриптор файла                      
     {                                                          
       получить индекс для данного имени файла (алгоритм namei);
       если (файл уже существует)                               
       {                                                        
          если (доступ не разрешен)                             
          {                                                     
             освободить индекс (алгоритм iput);                 
             возвратить (ошибку);                               
          }                                                     
       }                                                        
       в противном случае    /* файл еще не существует */       
       {                                                        
          назначить свободный индекс из файловой системы (алго- 
           ритм ialloc);                                        
          создать новую точку входа в родительском каталоге:    
           включить имя нового файла и номер вновь назначенного 
           индекса;                                             
       }                                                        
       выделить для индекса запись в таблице файлов, инициализи-
        ровать счетчик;                                         
       если (файл существовал к моменту создания)               
          освободить все блоки файла (алгоритм free);           
       снять блокировку (с индекса);                            
       возвратить (пользовательский дескриптор файла);          
     }                                                          

Рисунок 5.12. Алгоритм создания файла

Ядро проводит синтаксический анализ имени пути поиска, используя алгоритм namei и следуя этому алгоритму буквально, когда речь идет о разборе имен каталогов. Однако, когда дело касается последней компоненты имени пути поиска, а именно идентификатора создаваемого файла, namei отмечает смещение в байтах до первой пустой позиции в каталоге и запоминает это смещение в пространстве процесса. Если ядро не обнаружило в каталоге компоненту имени пути поиска, оно в конечном счете впишет имя компоненты в только что найденную пустую позицию. Если в каталоге нет пустых позиций, ядро запоминает смещение до конца каталога и создает новую позицию там. Оно также запоминает в пространстве процесса индекс просматриваемого каталога и держит индекс заблокированным; каталог становится по отношению к новому файлу родительским каталогом. Ядро не записывает пока имя нового файла в каталог, так что в случае возникновения ошибок ядру приходится меньше переделывать. Оно проверяет наличие у процесса разрешения на запись в каталог. Поскольку процесс будет производить запись в каталог в результате выполнения функции creat, наличие разрешения на запись в каталог означает, что процессам дозволяется создавать файлы в каталоге.

Предположив, что под данным именем ранее не существовало файла, ядро назначает новому файлу индекс, используя алгоритм ialloc (раздел 4.6). Затем оно записывает имя нового файла и номер вновь выделенного индекса в родительский каталог, а смещение в байтах сохраняет в пространстве процесса. Впоследствии ядро освобождает индекс родительского каталога, удерживаемый с того времени, когда в каталоге производился поиск имени файла. Родительский каталог теперь содержит имя нового файла и его индекс. Ядро записывает вновь выделенный индекс на диск (алгоритм bwrite), прежде чем записать на диск каталог с новым именем. Если между операциями записи индекса и каталога произойдет сбой системы, в итоге окажется, что выделен индекс, на который не ссылается ни одно из имен путей поиска в системе, однако система будет функционировать нормально. Если, с другой стороны, каталог был записан раньше вновь выделенного индекса и сбой системы произошел между ними, файловая система будет содержать имя пути поиска, ссылающееся на неверный индекс (более подробно об этом см. в разделе 5.16.1).

Если данный файл уже существовал до вызова функции creat, ядро обнаруживает его индекс во время поиска имени файла. Старый файл должен позволять процессу производить запись в него, чтобы можно было создать "новый" файл с тем же самым именем, так как ядро изменяет содержимое файла при выполнении функции creat: оно усекает файл, освобождая все информационные блоки по алгоритму free, так что файл будет выглядеть как вновь созданный. Тем не менее, владелец и права доступа к файлу остаются прежними: ядро не передает право собственности на файл владельцу процесса и игнорирует права доступа, указанные процессом в вызове функции. Наконец, ядро не проверяет наличие разрешения на запись в каталог, являющийся родительским для существующего файла, поскольку оно не меняет содержимого каталога.

Функция creat продолжает работу, выполняя тот же алгоритм, что и функция open. Ядро выделяет созданному файлу запись в таблице файлов, чтобы процесс мог читать из файла, а также запись в таблице пользовательских дескрипторов файла, и в конце концов возвращает указатель на последнюю запись в виде пользовательского дескриптора файла.

(***) Системная функция open имеет два флага, O_CREAT (создание) и O_TRUNC (усечение). Если процесс устанавливает в вызове функции флаг O_CREAT и файл не существует, ядро создаст файл. Если файл уже существует, он не будет усечен, если только не установлен флаг O_TRUNC.

Предыдущая глава || Оглавление || Следующая глава