Как вызвать функцию varargs через dbus?
Как вызвать функцию varargs через dbus, например, printf?
Сервер написан на C, клиент написан на Python.
Мои вопросы, как написать файл спецификации XML? А как написать мой GObject?
Заранее спасибо.
[Я использую DBus-GLib.]
1 ответ
Невозможно программно вызывать функцию с переменными числами и типом аргументов. Вы можете использовать соответствующие функции "v" (vprintf
и т.д.) но нет никакого способа сделать va_list
перейти к ним из стороннего кода и передать его через DBus.
В любом случае вам действительно нужно переосмыслить свой дизайн. Звонить небезопасно printf
со строкой форматирования, которая не контролируется вашей программой на 100%. Передача строки формата, предоставленной клиентом, является формулой бедствия, потому что printf
вызывает неопределенное поведение, если строка формата не соответствует аргументам. Почти во всех реальных ситуациях это будет означать повышение привилегий.