Я хотел бы добавить общую библиотеку в процесс (я использую ptrace()
для выполнения этой части), а затем получаю вывод из общей библиотеки обратно в отладчик, который я пишу используя некоторую форму IPC. Мой инстинкт использовать трубу, но только реальные требования:Настройка IPC между несвязанными процессами
- Я не хочу, чтобы хранить все в файловой системе, чтобы облегчить общение, как это будет только продолжаться до тех пор, пока отладчик работает.
- Я хочу портативное решение для Unix (поэтому идеально подходят системные вызовы Unix-стандарта).
Проблема я бегу в том, что, насколько я понимаю, если я называю pipe()
в отладчике, нет никакого способа, чтобы пройти «отправки» конец трубы к цели процесса, и наоборот, с принимающей стороной. Я мог бы создать общую память, но я думаю, что это потребует создания файла где-нибудь, чтобы я мог ссылаться на сегмент памяти из обоих процессов. Как другие отладчики выводят вывод, когда они присоединяются к процессу после того, как он уже запущен?
Любая конкретная причина, по которой вы выбрали трубы Unix?Оба кода - отладчик и бизнес-логика в сценариях? Или они на любом другом языке, таком как Java/C++? –
И введенная библиотека, и отладчик находятся на C. Я выбрал каналы, потому что я использовал их в аналогичных ситуациях (то есть дочерний процесс, выводящий в оболочку, которая породила его), но я открыт и для других типов IPC. – Dan