The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
" Направление на stdin процесса, не родственного основному."
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

" Направление на stdin процесса, не родственного основному."
Сообщение от Cadaver Искать по авторуВ закладки on 11-Апр-03, 19:38  (MSK)
Подскажите пожалуйста, как направить на stdin процессу, о котором известен PID средствами C некоторые данные. И как получить его stdout?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. " Направление на stdin процесса, не родственного основному."
Сообщение от Max Zinal emailИскать по авторуВ закладки on 13-Апр-03, 11:40  (MSK)
> Подскажите пожалуйста, как направить на stdin процессу,
> о котором известен PID средствами C некоторые данные.

Мультиплатформенного способа, по-моему, не существует.
Если дескриптор stdin-а является приватным для процесса,
едва ли удастся что-то туда направить. Нехилой задачей
является также выяснение, что же это за дескриптор.

Перенаправление ввода-вывода (то есть перенастройка этих
дескрипторов) может быть выполнена либо при запуске процесса,
либо в нём самом. В UNIX-подобных системах одно эквивалентно
другому благодаря fork()у.

> И как получить его stdout?

См. выше. Если ввод-вывод перенаправлен неким заранее
известным способом (ну там на трубку или сокет), что-то
можно сделать. Если нет - не пройдёт этот номер.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. " Направление на stdin процесса, не родственного основному."
Сообщение от XMan emailИскать по авторуВ закладки on 13-Апр-03, 17:51  (MSK)
Теоретически, можно попробовать пользовать "файлы":

stdin - /proc/PID_процесса/fd/1
stdout - /proc/PID_процесса/fd/2

По крайней мере, при посылке на stdin шела на экране символы появляются (только почему-то не воспринимаются, как команда), а при чтении из stdout процессы соперничают друг с другом - кто первый прочитал - "того и тапки" :)

Все это относится к Linux. Как в других ОС - увы, незнаю.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. " Направление на stdin процесса, не родственного основному."
Сообщение от Cadaver Искать по авторуВ закладки on 14-Апр-03, 18:48  (MSK)
Вообще-то процессы не cовсем неродственные: есть RPC-сервер, который запускает по желанию RPC-клиента процедуру, порождающую на машине-сервере процесс fork'ом, но потом эта процедура завершается и припоследующих обращениях клиента требуется этому порожденному ранее процессу кидать данные, лучше всего на stdin.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. " Направление на stdin процесса, не родственного основному."
Сообщение от Cadaver Искать по авторуВ закладки on 15-Апр-03, 23:26  (MSK)
Ну ответьте если кто что знает, мне это до зарезу надо!
  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. " Направление на stdin процесса, не родственного основному."
Сообщение от Max Zinal emailИскать по авторуВ закладки on 17-Апр-03, 19:42  (MSK)
>Ну ответьте если кто что знает, мне это до зарезу надо!

Если сервер с клиентом можно подкрутить на уровне исходников,
зарез ликвидмруется путём создания вульгарной трубочки.
По-любому нужно как-то вести учёт ранее запущенных процессов,
так что непосредственно перед fork() делаем 2*pipe(),
а после fork() 2*dup2()+2*close() в порождённом процессе,
2*close() в родительском. Нужные концы созданных трубочек
запоминаем, используем при последующих вызовах. Плюс нужна
некая политика освобождения ресурсов (защита от смертельной
комбинации глюков, дураков и жуликов).

Успехов !

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




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

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