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

Каталог документации / Раздел "Программирование в Linux" / Оглавление документа
next up previous contents
Next: FIFO - именованные каналы Up: Трубы (pipes) Previous: Использование труб   Contents

Функция popen()

Чтобы избавить программиста от лишнего труда, для работы с трубами введена удобная функция popen(). Синтаксис этой функции:

FILE *popen(const char* command, const char* mode);
Параметр command соответствует системному вызову команды, которая выполняет некоторую программу. Между процессом пользователя и вызванным процессом устанавливается труба для обмена информацией. Режим работы трубы устанавливается параметром mode, где "r" означает чтение из трубы, а "w" - запись в трубу. В случае ошибки при создании трубы, popen() возвращает NULL, иначе указатель на файл. Таким образом, функция popen() выполняет следующие действия:

Пример использования popen():

#include <unistd.h>

#include <sys/wait.h>

#include <stdio.h>

#include <sys/types.h>

#include <fcntl.h>

#define EXIT(s) {fprintf(stderr, "%s",s); exit(0);}

#define USAGE(s) {fprintf(stderr, "%s Данные для

         чтения\n",s); exit(0);}

#define MAX 8192

enum {ERROR=-1,SUCCESS};

 

int main(int argc, char **argv)

{

  FILE *pipe_writer, *file;

  char buffer[MAX];

  if(argc!=2)

    USAGE(argv[0]);

  if((file=fopen(argv[1], "r")) == NULL)

    EXIT("Ошибка открытия файла.........\n");

  if(( pipe_writer=popen("./filter" ,"w")) == NULL)

    EXIT("Ошибка открытия трубы...........\n");

  while(1)

  {

    if(fgets(buffer, MAX, file) == NULL)

    break;

    if(fputs(buffer, pipe_writer) == EOF)

      EXIT("Ошибка записи........\n");

  }

  pclose(pipe_writer);

}



2004-06-22

АКЦИЯ! ПОДПИШИСЬ на журнал Linux Format до 31 января 2012 года и выиграй СУПЕРПРИЗ!

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

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

Подробнее о проведении акции вы можете прочитать на странице сайта.


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