Отправьте сообщения в программу через командную строку

Причины, почему селекторы на основе id не работают

  1. Элемент / DOM с указанным идентификатором еще не существует.
  2. Элемент существует, но он не является зарегистрированный в DOM [в случае, если HTML-узлы динамически добавляются из ответов Ajax].
  3. Присутствует более одного элемента с тем же идентификатором, который вызывает конфликт.

Решения

  1. Попробуйте получить доступ к элементу после его объявления или, альтернативно, использовать такие вещи, как $(document).ready();
  2. . Для элементов, исходящих из ответов Ajax, используйте метод .bind() для jQuery. В старых версиях jQuery для этого было .live().
  3. Используйте инструменты [например, плагин webdeveloper для браузеров], чтобы найти дубликаты идентификаторов и удалить их.
9
задан sth 11 August 2010 в 16:58
поделиться

6 ответов

Я предлагаю использовать или сокет Unix или D-шину. Используя сокет могло бы быть быстрее, если Вы знакомы с программированием сокетов Unix и только хотите несколько операций, тогда как D-шина могла бы помочь сконцентрироваться на реализации функциональности знакомым объектно-ориентированным способом.

Смотрите на Руководство Beej по Unix IPC, особенно глава по сокетам Unix.

4
ответ дан 4 December 2019 в 13:06
поделиться

Так, я могу упускать суть здесь, но deafult основная функция программы C берет два аргумента; argc, количество количества аргументов (по крайней мере один) и argv (или вектор аргумента), список аргументов. Вы могли просто проанализировать через аргументы и назвать корректный метод. Например:

 int main(int argc, *argv[])
 {
     /*loop through each argument and take action*/
      while (--argc > 0)
      {
           printf(%s%s, *++argv, (argc > 1) ? " " : "");
      }
 } 

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

Править: Хорошо, он был после чего-то еще, но это не было действительно ясно, прежде чем вопрос был отредактирован. Не должны вскакивать на моего представителя...

-2
ответ дан 4 December 2019 в 13:06
поделиться

Если это должно быть межплатформенным, Вы могли бы хотеть рассмотреть то, чтобы заставлять рабочий экземпляр послушать на порте TCP и иметь экземпляр, который Вы разжигаете от командной строки, отправляют сообщение в тот порт.

5
ответ дан 4 December 2019 в 13:06
поделиться

Если бы Вы были в Windows, то я сказал бы Вам использовать скрытое окно для получения сообщений, но так как Вы использовали ./, Я предполагаю, что Вы хотите что-то Основанное на Unix.

В этом случае я пошел бы с именованным каналом. Sun имеет учебное руководство об именованных каналах, которые могли бы быть полезными.

Программа, вероятно, создала бы канал и послушала бы. У Вас мог быть отдельный сценарий командной строки, который откроет канал и просто повторит его параметры командной строки к нему.

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

8
ответ дан 4 December 2019 в 13:06
поделиться

Вот чего здесь никто не сказал: "отсюда нельзя попасть".

Командная строка доступна только в том виде, в котором она была при запуске вашей программы.

Пример вызова « fillinthename arguments ...» для связи с fillinthename один раз fillinthename может быть выполнен только с использованием двух экземпляров программы, которые общаются друг с другом.

Другие ответы предлагают способы достижения коммуникации.

Программа, подобная amarok , должна обнаруживать существование другого экземпляра. самого себя, чтобы знать, какую роль он должен играть, основная роль постоянный получатель сообщений / сервер, или второстепенная роль одного выстрела отправитель сообщения.

отредактировано так, чтобы слово fillinthename действительно отображалось.

1
ответ дан 4 December 2019 в 13:06
поделиться

Один метод, который я видел, - это сделать вашу программу Host просто «оболочкой» для вашей реальной программы. Например, когда вы запускаете свое приложение в обычном режиме (например: ./ Host ), программа разветвляется на часть вашего кода «главное приложение». Когда вы запускаете свою программу способом, предполагающим, что вы хотите сигнализировать запущенному экземпляру (например: ./ Host --send-message restart ), программа ответит на часть «отправитель сообщения» вашего код. Это как два приложения в одном. Другой вариант, который не использует fork , - сделать Host исключительно приложением «отправителя сообщений» и сделать ваше «основное приложение» отдельным исполняемым файлом (например: Host_core ), что Хост может запускаться отдельно.

Часть «главное приложение» вашей программы должна будет открыть какой-то канал связи для получения сообщений, а часть «отправитель сообщения» должна будет подключиться к этому каналу и использовать его для отправки сообщений. Существует несколько различных вариантов отправки сообщений между процессами. Некоторые из наиболее распространенных методов - это трубы и сокеты .В зависимости от вашей ОС вам могут быть доступны дополнительные параметры; например, QNX имеет каналов , а BeOS / Haiku имеет сообщений BM . Вы также можете найти библиотеку, которая аккуратно завершает эту функциональность, например lcm .

0
ответ дан 4 December 2019 в 13:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: