LINUX.ORG.RU

Кроссплатформенная библиотека для работы с процессами


0

1

Нужна кроссплатформенная (для виндов и линуксов) библиотека для работы с процессами. Пишу на C++. Библиотеки интересуют как плюсовые, так и сишные. От библиотеки требуется 2 функции - создать процесс и убить процесс.

Deleted

> создать процесс и убить процесс

Я бы даже голову бы не грел насчет библиотеки в этом случае.

zJes ★★
()

да сделай вручную - это, при такой постановке задачи, очень просто, а потом выложи, может кто не станет пилить лисапет, а скажет спасибо тебе :)

shty ★★★★★
()

Если только создать и убить, ей богу, проще сделать абстракцию и самому по надобности реализовывать.

tensai_cirno ★★★★★
()

Это сейчас тебе достаточно создать и убить процесс.
А потом понадобится еще и межпроцессорное взаимодействие, синхронизация и т.п. (поверь мне, инфа - 100%).

Так что не слушай всех здесь высказавшихся и используй Qt. Заодно увидишь там много всег приятного окромя процессов.

trex6 ★★★★★
()

> для виндов и линуксов

Поскольку под виндой наверняка имеется ввиду подсистема Win32, то нормальной кросплатформенной работы с процессами не может быть в принципе. В Win32 выпилен fork -> работа с процессами ограничивается запуском экзешников.

кроссплатформенная

cygwin.

geekless ★★
()
Ответ на: комментарий от geekless

>Поскольку под виндой наверняка имеется ввиду подсистема Win32, то нормальной кросплатформенной работы с процессами не может быть в принципе. В Win32 выпилен fork -> работа с процессами ограничивается запуском экзешников.

fork - глупая и бесполезная вещь. Она нужна только в отсутствие нормальной работы с тредами.

anonymous
()

На винде процесс это далеко не то же самое, что в линуксе.
Поэтому даже такие требуемые функции «просто написать» затруднительно.

anonymous
()
Ответ на: комментарий от anonymous

Балмер, залогиньтесь.

А покажи-ка, мил человек, как ты при «нормальной работе с тредами» изолируешь друг от друга элементы демона, работающие под разными привелегиями и UID-ами, например

geekless ★★
()
Ответ на: комментарий от geekless

>изолируешь друг от друга элементы демона, работающие под разными привелегиями и UID-ами, например
А на разных компьютерах как твой fork поможет?

Вообще, тут вопрос:
Первый - а нужно ли, разделять на несколько процессов? Скорее всего - нет. И приложение стоит переписать.

Если ты сумеешь ответить на вопрос утвердительно:
Очевидно, что с самого начала надо было писать несколько совершенно отдельных компонентов(отдельных приложений, вместо тупого форкания) и использовать механизмы межпроцессного взаимодействия любого вида, например ZeroMQ.

anonymous
()
Ответ на: комментарий от anonymous

>А на разных компьютерах как твой fork поможет?
Лол, а как CreateProcessEx на разных компьютерах поможет? Ты libastral уже собрал под винду?

Первый - а нужно ли, разделять на несколько процессов? Скорее всего - нет. И приложение стоит переписать.


Диситильна. Давно пора все сетевые демоны переписать. А то понаделали черт знает что эти проклятые юниксойды, никакого понимания о правильной архитектуре.

Очевидно, что с самого начала надо было писать несколько совершенно отдельных компонентов(отдельных приложений, вместо тупого форкания)


cd \Windows\System32 -> dir *.exe -> куча непонятных экзешников «отдельных компонентов, вместо тупого форкания», которые не известно для чего нужны, но без них что-нибудь точно отвалится. Простая и прозрачная система, ок.

например ZeroMQ


Типа, блеснул.

geekless ★★
()
Ответ на: комментарий от geekless

>Лол, а как CreateProcessEx на разных компьютерах поможет? Ты libastral уже собрал под винду?

А при чем тут?
Видишь ли, дело в том, что ты придумал совершенно необычный, мягко говоря, пример. Я бы даже сказал, совершенно нереалистичный пример. В попытках оправдать свое красноглазие, может быть; я не знаю.

Если у нас IPC и все такое - надо и использовать нормальное IPC. А обычно же fork пользуется для замены многопоточности. И, кстати, напомнить, что в линуксе треды появились относительно недавно? Как и в большинстве юникс-подобных ОС. И виндовое API, кстати, в плане тредов гораздо удобнее.

cd \Windows\System32 -> dir *.exe -> куча непонятных экзешников «отдельных компонентов, вместо тупого форкания», которые не известно для чего нужны, но без них что-нибудь точно отвалится. Простая и прозрачная система, ок.


Иногда лучше жевать, чем говорить. И иногда лучше дрочить, чем печатать буквы на клавиатуре, ага. Особенно, если понятия не имеешь о том, о чем печатаешь.

anonymous
()
Ответ на: комментарий от anonymous

> fork - глупая и бесполезная вещь. Она нужна только в отсутствие нормальной работы с тредами.

Да, pthreads - это залепа, а не работа с тредами. Расплодили залепу на каждом линуксе и юниксе. Идиоты, да? Не понимают, что это залепа.

И форк тащат, идиоты, во все солярисы, куниксы, аиксы, хп-уксы, бсды, линуксы и мак оси.

anonymous
()
Ответ на: комментарий от anonymous

> напомнить, что в линуксе треды появились относительно недавно? Как и в большинстве юникс-подобных ОС. И виндовое API, кстати, в плане тредов гораздо удобнее.

Да, треды изобрели и начали использовать в винде (в windows 7?). Аха, в точку.

anonymous
()
Ответ на: комментарий от anonymous

Ну хватит кривляться то, в самом деле.
Всем и так понятно, что в жопу твою, красноглазую, ужалили.

anonymous
()
Ответ на: комментарий от anonymous

> fork - глупая и бесполезная вещь. Она нужна только в отсутствие нормальной работы с тредами.

треды — анахронизм и пережиток прошлого, рассадник багов и явный тормоз удобства разработки под многопроцессорные/многоядерные системы. Процессный подход а-ля Erlang куда удобнее и логичнее.

Joe_Bishop
()

> Пишу на C++

Года 3 назад написал popen++ - умеет создавать и убивать, а также взаимодействовать с дочерними процессами через стандартные потоки ввода/вывода. Работает как на Linux, так и на винде (а также вроде успешно юзал на FreeBSD). Зависит от boost.

archimag ★★★
()
Ответ на: комментарий от anonymous

> Ну хватит кривляться то, в самом деле.

Ты бы постарался привести конкретные примеры «неудобства» и «лучшего апи в винде».

anonymous
()

Так понимаю это тоже ваш вопрос?

From unixforum.org

Существует ли кроссплатформенная (всмысле с поддержкой и никсов, и виндов) библиотека для работы с потоками процессами. Нужно 2 функции - запустить программу и прибить программу, все остальное могу реализовать сам. Пишу на C++. Qt не предлагать.

Так вам нужны потоки или процессы?

Процессы. Опечатался. Для потоков и так использую Boost.Thread.

http://libexecstream.sourceforge.net/ ?

AlexVR ★★★★★
()
Ответ на: комментарий от geekless

Да ну тебя нахуй. Тебе что, talks не хватает?
Нехуй, блядь, превращать Development в логово малолетних прыщавых красноглазиков-фанатов линупса.

anonymous
()
Ответ на: комментарий от Joe_Bishop

В Erlang не какой-то особенный «процессный подход», там просто язык - чисто функциональный, плюс передача сообщений.

anonymous
()
Ответ на: комментарий от geekless

В Windows можно, при желании, использовать POSIX subsystem, где fork есть, либо native API, средствами которого fork можно реализовать.

anonymous
()

Есть такая лабуда, Boost.Process, правда в Boost ее так и не приняли, не знаю, какой там статус.

http://www.netbsd.org/~jmmv/process/

Сам сделал для работы самопал а ля QProcess, работающий на boost.asio и boost.iostreams Смерть процесса правда отлавливаю пингуя его постоянно, что не очень красиво, но хоть от сигналов не зависит. Около 200 строк.

ratatosk
()
Ответ на: комментарий от ratatosk

Опс.. Я плохо разглядел слово «кроссплатформенная». Моя поделка только для позиксов.

ratatosk
()
Ответ на: комментарий от trex6

Qt толстый и о нем я знаю. Да и писать приложение, у которого нет гуя (зато есть веб-интерфейс) с использованием Qt - бред. Мне IPC, синхронизация и т.п. в данном случае не нужна - процессы, которые я должен буду порождать и убивать, о таком даже знать не должны :)

Deleted
()
Ответ на: комментарий от geekless

Поскольку под виндой наверняка имеется ввиду подсистема Win32, то нормальной кросплатформенной работы с процессами не может быть в принципе. В Win32 выпилен fork -> работа с процессами ограничивается запуском экзешников.

А мну больше и не надо.

Deleted
()
Ответ на: комментарий от anonymous

Первый - а нужно ли, разделять на несколько процессов? Скорее всего - нет. И приложение стоит переписать.

Я ничего не разделяю. К моей программе программы попадают в виде сорцов. Задача моей программы - скомппилить эти сорцы, запустить программу, прибить в случае превышения лимита по времени, и обработать вывод, если программа закончила выполнение корректно.

Deleted
()
Ответ на: комментарий от anonymous

И виндовое API, кстати, в плане тредов гораздо удобнее.

Оно удобнее, чем ядерный API (clone), но почему-то преимуществ в сравнении с pthread не увидел.

И вообще, для тредов юзаю Boost.Thread.

Deleted
()

Буду использовать предложенный мне на unixforum.org libexecstream.

Никогда и не предполагал, что вопрос о кроссплатформенной библиотеке для работы с процессами может скатится в флейм Linux vs Windows.

PS. Предложенный здесь popen++ не подходит, т.к. POSIX only.

Deleted
()

есть библиотека от mozilla. в ней есть много вкусного, в том числе и треды.

anonymous
()
Ответ на: комментарий от Deleted

> Предложенный здесь popen++ не подходит, т.к. POSIX only.

Как так? Я его писал специально потому, что pstreams меня не устраивала именно тем, что не поддерживала винду. Т.е. поддержка винды там есть, абсолютно точно ))

archimag ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.