The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
перенаправление стандартного вывода в переменную, !*! lemegeton, 23-Июл-05, 21:17  [смотреть все]
Всем привет! Функция system() направляет результат выполнения в стандартный вывод, т.е. на экран. Мне надо вернуть результат выполнения в переменную для манипуляций с ней. Как это сделать? Другими словами мне надо перенаправить стандартный вывод в определенную переменную. Прога на Си.
  • перенаправление стандартного вывода в переменную, !*! chip, 22:21 , 23-Июл-05 (1)
    >Всем привет! Функция system() направляет результат выполнения в стандартный вывод, т.е. на
    >экран. Мне надо вернуть результат выполнения в переменную для манипуляций с
    >ней. Как это сделать? Другими словами мне надо перенаправить стандартный вывод
    >в определенную переменную. Прога на Си.

    popen() || (fork() && pipe())


    • перенаправление стандартного вывода в переменную, !*! lemegeton, 08:48 , 24-Июл-05 (2)
      >popen() || (fork() && pipe())

      Спасибо. Работает...Еще вопрос -  а при организации канала, например канала на чтение, должен процесс с которым организуется канал, создавать канал на запись?

      • перенаправление стандартного вывода в переменную, !*! chip, 12:11 , 24-Июл-05 (3)
        >>popen() || (fork() && pipe())
        >
        >Спасибо. Работает...Еще вопрос -  а при организации канала, например канала на
        >чтение, должен процесс с которым организуется канал, создавать канал на запись?

        Не совсем понял до конца вопроса. Но ситуация такова, создается pipe после этого один из процессов закрывает дескриптор на запись (если предполагается что он будет читателем), а другой тогда закрывает дескриптор на чтение. Соотвественно, если первый писатель, то он закрывает на чтение, второй - на запись.


      • перенаправление стандартного вывода в переменную, !*! const, 23:03 , 28-Июл-05 (4)
        >при организации канала, например канала на
        >чтение, должен процесс с которым организуется канал, создавать канал на запись?

        Должен? Выбора нет :-)
        pipe() создаёт трубу не "на чтение" или "на запись", а просто трубу. И отдаёт оба конца тебе.
        popen() - обложка для fork() и pipe(), поэтому работает по тому же принципу.

        • перенаправление стандартного вывода в переменную, !*! Alexander S. Salieff, 22:44 , 29-Июл-05 (5)
          >>при организации канала, например канала на
          >>чтение, должен процесс с которым организуется канал, создавать канал на запись?
          >
          >Должен? Выбора нет :-)
          >pipe() создаёт трубу не "на чтение" или "на запись", а просто трубу.
          >И отдаёт оба конца тебе.
          >popen() - обложка для fork() и pipe(), поэтому работает по тому же
          >принципу.

          Тока есть один неприятный момент, что popen может только писать в процесс или только читать... А вот ежели охота и то и другой, то тока fork и перемапливать stdin stdout или чего там хочется от жизни...




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру