LINUX.ORG.RU

Передача значений между процессами

 


1

3

Запущены два процесса на linux'е, первый неважно на чем написан, второй - на питоне. Как передавать нужные числовые или текстовые значения из первого процесса в другой?

Пока придумал для первого записывать значение в текстовый файл, который второй прочитает. Не нравится это решение тем, что для чтения/записи придется открывать и закрывать файл: это оверхед и насилование харда.

★★★★★

это оверхед и насилование харда

Оверхед будет в любом случае, так как придётся конвертировать данные. А так - json по любому удобному каналу.

RazrFalcon ★★★★★
()

Пока придумал для первого записывать значение в текстовый файл, который второй прочитает.

Стандартные потоки же ну. Какой к чёрту файл.

crutch_master ★★★★★
()

Пока придумал для первого записывать значение в текстовый файл, который второй прочитает. Не нравится это решение тем, что для чтения/записи придется открывать и закрывать файл: это оверхед и насилование харда.

tmpfs

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

Запущены два процесса на linux'е, первый неважно на чем написан, второй - на питоне. Как передавать нужные числовые или текстовые значения из первого процесса в другой?

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

Я про то, какие потоки ты имел в виду. Ты про те, которые stdout/stdin? Так связь будет не двусторонняя и процессы должны быть «родственниками».

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

Я про то, какие потоки ты имел в виду.

stdin/stdout

Так связь будет не двусторонняя

А она нужна? Можно сделать.

и процессы должны быть «родственниками».

Ну так в чём проблема сделать ./proc1 | ./proc2 ?

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

Два процесса не являются «родными»

Тогда fifo во входной поток второго приложения через tail -f.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 2)
Ответ на: комментарий от crutch_master

Ну так в чём проблема сделать ./proc1 | ./proc2 ?

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

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

А можно как-то подцепится к stdout уже запущенного приложения?

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

Второй процесс должен быть потомком первого, что невозможно. Или я не понял суть PIPES?

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

fifo и pipes через костыль.

#Делаешь 
mkfifo to_piston
#Запускаешь свою поделку
tail -f to_piston | ./piston_podelka.py
#Читаешь стандартный ввод или приделываешь tail -f какой-нибудь пистонолибой 
#Пишешь в to_piston как в файл из своей первой проги хз на чём
#???
#PROFIT!

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от crutch_master

tail -f to_piston | ./piston_podelka.py

Не получится таким образом запустить сервис. Что внутри кода надо добавить чтобы прочитало?

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

Но тогда ему придётся тащить mq либу в проект хз-на-чем.

crutch_master ★★★★★
()

Голос за сокеты. Как преимущество - возможность сделать всё то же самое, но через сеть, т.е. будут 2 разных машины. Но вообще зависит от нагрузок обмена между процессами.

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

родными

так FIFO для того и нужны, разве нет ? Он по сути как файл и работает

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

И тут ты такой в белом плаще рассказываешь про AMQP.

Это не плащ, это халат. А тебе я могу про POSIX Message Queue рассказать.

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

Ну частный случай унылого всяко менее уныл, чем общее, ага.

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

Все перечисляют знакомые слова.

Я знаю слово d-bus! Возьмите меня джуном.

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

выше тебя человек перечислил как ipc реализуется, а ты написал магические слова типа ипц и пайпов

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

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

Но ведь в вашей js-компании смузихлёбов с макбучками про пайпы даже не слышали.

anonymous
()

текстовый файл, который второй прочитает. Не нравится это решение тем, что для чтения/записи придется открывать и закрывать файл

так а ты не закрывай файл. а во-вторых, юзай пайпы, а не файлы:

$ mkfifo mypipe
$ echo hello > mypipe & cat mypipe
hello

изи. а если уж совсем без оверхеда, то shared memory, но тогда и питошу надо бы чем-то адекватным заменить.

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

Вот из-за таких, как ты и пилят по веб-серверу в контейнер на каждый чих. А могли бы тупо слать строки по пайпам.
Но ведь в вашей js-компании смузихлёбов с макбучками про пайпы даже не слышали.

Ты зря так, на самом деле. Ты думаешь почему фирмы покупают MS SQL? Это не шутка - это статистика https://infostart.ru/public/967268/ Бизнес готов переплатить кучу денег за то, что ты подгонишь ему гарантировано работающее решение, в том числе за то, что ты сам руководителей убедишь в том, что именно твое решение работающее и гарантированное. Дальше ты нанимаешь индусов, которые не умеют и не будут выбирать инструменты для решения задачи - они просто будут по накатанной дорожке решать абсолютно все задачи. И знаешь что? У них таки будет хорошо получаться, потому что заказчик все равно ничего не понимает в IT, а исполнители сэкономили ресурсы/время на выборе архитектуры, подготовке и поиске кадров.

Знаешь, мне вспомнился врач-травматолог, который каждого пациента с болью в суставах не глядя лечил от артрита. Он таки экономил себе время - это эффективный способ ведения бизнеса. Большинству помогало. У тебя вдавленный перелом, подагра, разрыв связки, или ревматизм - это твои проблемы, ты сам будешь долго и мучительно бегать по врачам, пытаясь найти причину, но зато ты не будешь морочить голову этому травматологу.

byko3y ★★★★
()
Ответ на: комментарий от i-rinat

Думаешь, Кафка не успеет? Я, конечно, понимаю, что жаба тормозит и всё такое, но не настолько же!

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

Это же лор. Как обычно, в треде несколько нормальных сообщений с советами x|y|z, а потом набирают слоупоки и сообщают, что все отписавшися выше — мудаки, советующие херню, и затем советуют те же самые x|y|z. Каждый второй технический тред, где можно дать однозначный ответ, такой.

WitcherGeralt ★★
()
Ответ на: комментарий от i-rinat

Подними Kafka

А потом выяснится, что ТС’у нужно было передавать мегабайт сообщений в час.

Ты ничего не понимаешь в энтерпрайзе: у нас тут люди не умеют ничего, кроме кафки, а значит кафка - лучшее решение коммуникации процессов.

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

Я помню, как-то впечатлил чела на собеседовании на аналогичном вопросе. Спросил, влезут ли данные в int. Он сказал, что да. Я сказал, что можно запихать в struct sigaction (сам не проверял).

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

Или siginfo_t, не помню уже сам API это навскидку.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от WitcherGeralt

Нет, не вычитал, просто пришло в голову внезапно, когда все стандартные ответы исчерпались (собеседовал один из крутых разрабов nginx, кстати).

DELIRIUM ☆☆☆☆☆
()
Последнее исправление: DELIRIUM (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

У тебя ещё остались вопросы, на каких костылях работает qip.ru? =)

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