Как вызвать функцию varargs через dbus?

Как вызвать функцию varargs через dbus, например, printf?

Сервер написан на C, клиент написан на Python.

Мои вопросы, как написать файл спецификации XML? А как написать мой GObject?

Заранее спасибо.

[Я использую DBus-GLib.]

1 ответ

Решение

Невозможно программно вызывать функцию с переменными числами и типом аргументов. Вы можете использовать соответствующие функции "v" (vprintf и т.д.) но нет никакого способа сделать va_list перейти к ним из стороннего кода и передать его через DBus.

В любом случае вам действительно нужно переосмыслить свой дизайн. Звонить небезопасно printf со строкой форматирования, которая не контролируется вашей программой на 100%. Передача строки формата, предоставленной клиентом, является формулой бедствия, потому что printf вызывает неопределенное поведение, если строка формата не соответствует аргументам. Почти во всех реальных ситуациях это будет означать повышение привилегий.

Другие вопросы по тегам