Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Нужен совет новичку по С++  (Прочитано 885 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Vlad.V

  • Автор темы
  • Активист
  • *
  • Сообщений: 478
    • Просмотр профиля
Нужен совет новичку по С++
« : 06 Октября 2015, 20:46:00 »
Доброе время суток! Нужен совет, есть две программы (А и Б) одна работает в цикле и собирает инфу о состоянии системы, при определенных условиях программа А, вызывает программу Б с аргументами, при запуске программа Б выполняет парсинг конфигов, после чего начинает работу с принятыми данными. Можно ли сделать так, чтобы программа Б постоянно не выполняла парсинг, так как конфиг файлы меняются реже чем выполняется запуск программы Б?.
Я себе представил это так:
1. при старте системы программы А и Б запускаются;
2. программа Б выполняет парсинг конфигов и останавливается висеть как демон и ждать сигнала от программы А
3. программа А, при необоходимости, уже не запускает программу Б, а просто передает ей данные, соответственно программа Б просыпается, выполняет необходимые действия и сново в режим stand by.

Посоветуйте как реализовать 2й и 3й пункт, а то идея есть, а с чего начать не знаю  :'(

Спасибо!
 

Оффлайн qwerty12344321

  • Участник
  • *
  • Сообщений: 166
  • DIY or DIE
    • Просмотр профиля
    • мой GitHub
Re: Нужен совет новичку по С++
« Ответ #1 : 06 Октября 2015, 21:09:13 »
Пронрамма А
while(true
{
x=то
y=то
z=то
if ( тоооттто )
{
программа b -x - y -z
}
}

программа b
получ аргументов
нужные действия

Оффлайн Vlad.V

  • Автор темы
  • Активист
  • *
  • Сообщений: 478
    • Просмотр профиля
Re: Нужен совет новичку по С++
« Ответ #2 : 06 Октября 2015, 22:01:02 »
Ну это стандартный способ, вроде. Другими словами программа Б должна быть запущена и получать данные от программы А. Может я не совсем понятно объяснил?

Оффлайн qwerty12344321

  • Участник
  • *
  • Сообщений: 166
  • DIY or DIE
    • Просмотр профиля
    • мой GitHub
Re: Нужен совет новичку по С++
« Ответ #3 : 06 Октября 2015, 22:44:00 »
Ну так чем он плох?

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5633
  • Все по палатам!
    • Просмотр профиля
Re: Нужен совет новичку по С++
« Ответ #4 : 06 Октября 2015, 22:51:53 »
А причем тут С++?  :-[
Извините, я все еще учусь

Оффлайн Vlad.V

  • Автор темы
  • Активист
  • *
  • Сообщений: 478
    • Просмотр профиля
Re: Нужен совет новичку по С++
« Ответ #5 : 06 Октября 2015, 22:53:01 »
Пронрамма А
while(true
{
x=то
y=то
z=то
if ( тоооттто )
{
программа b -x - y -z
}
}

программа b
получ аргументов
нужные действия

В Вашем примере программа А запускает программу Б и передает ей аргумент, т.е. программа Б не была запущена. А мне нужно чтобы программа А не запускала программу Б, а просто передавала ей информацию, программа Б уже должна работать. Как с программы А передать данные в уже запущенную программу Б?

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5633
  • Все по палатам!
    • Просмотр профиля
Re: Нужен совет новичку по С++
« Ответ #6 : 06 Октября 2015, 23:00:11 »
Посмотри сорсы, к примеру, программы
http://linux.die.net/man/1/tvtime-command
Хотя она на Си, но это не имеет значения.
Извините, я все еще учусь

Оффлайн Vlad.V

  • Автор темы
  • Активист
  • *
  • Сообщений: 478
    • Просмотр профиля
Re: Нужен совет новичку по С++
« Ответ #7 : 06 Октября 2015, 23:01:02 »
А причем тут С++?  :-[
Программы на С++, и решение нужно для плюсов. Есть же разница между, например, между Java и С++

Пользователь решил продолжить мысль 06 Октября 2015, 23:09:56:

Посмотри сорсы, к примеру, программы
http://linux.die.net/man/1/tvtime-command
Хотя она на Си, но это не имеет значения.
Я, конечно, благодарен за совет, но как-то не совсем мой уровень. Мне нужно понять как это работает и как найти информацию по этому в сети, смотреть сорсы не понимая что искать - имхо бесполезно
« Последнее редактирование: 06 Октября 2015, 23:09:56 от Vlad.V »

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5633
  • Все по палатам!
    • Просмотр профиля
Re: Нужен совет новичку по С++
« Ответ #8 : 06 Октября 2015, 23:56:57 »
Мне нужно понять как это работает и как найти информацию по этому в сети...
Так для этого надо просто освоить "Си" "С++", системное программирование в линукс, и затем "межпроцессное взаимодействие в линукс" (IPC). По всем этим темам есть литература и она легко ищется в инете... А если с языками проблем нет, то можно по примеру (что я дал) попробовать разобраться. Выбор за вами
Извините, я все еще учусь

Оффлайн Vlad.V

  • Автор темы
  • Активист
  • *
  • Сообщений: 478
    • Просмотр профиля
Re: Нужен совет новичку по С++
« Ответ #9 : 07 Октября 2015, 08:33:45 »
Вот это ""межпроцессное взаимодействие в линукс" (IPC)" мне и нужно было. Чтобы понять что искать, нужно хотя-бы знать как правильно называется эта штука)

Оффлайн qwerty12344321

  • Участник
  • *
  • Сообщений: 166
  • DIY or DIE
    • Просмотр профиля
    • мой GitHub
Re: Нужен совет новичку по С++
« Ответ #10 : 07 Октября 2015, 10:24:16 »
вот ту неплохо описан первый способ
http://habrahabr.ru/post/122108

программа a
nffnf > /home/file

программа b

info = /home/file

Оффлайн Vlad.V

  • Автор темы
  • Активист
  • *
  • Сообщений: 478
    • Просмотр профиля
Re: Нужен совет новичку по С++
« Ответ #11 : 07 Октября 2015, 11:51:44 »
Спасибо, уже читаю... Мне понравилось 2 способа, через файл и через сокет. Правда сокет тяжелее вроде.

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 755
    • Просмотр профиля
Re: Нужен совет новичку по С++
« Ответ #12 : 07 Октября 2015, 13:29:36 »
Как и написали про ipc - класть данные в shared memory, и по семафору забирать их оттуда и обрабатывать.

 

Страница сгенерирована за 0.048 секунд. Запросов: 25.