В x86 _64 код ядра переключается на стек прерываний при прерывании. На каждый ЦП приходится один стек прерываний. Если прерывание происходит при работе в пользовательском режиме, фактически происходит два переключения стека :сначала из пользовательского стека в стек ядра для этого потока/процесса (это делается автоматически аппаратным обеспечением ), затем происходит переключение на стек прерываний. См.https://www.kernel.org/doc/Documentation/x86/kernel-stacks
Это невозможно из функции exec. Однако Zathura предоставляет эту информацию по шине D -, которая представляет собой инструмент IPC, используемый во многих приложениях Linux. Я бы порекомендовал установить D -Bus viewer (Я использовал d -футов )и искал «zathura», чтобы увидеть доступные свойства и команды ---, там есть несколько полезных.
Важно отметить, что номер текущей страницы -доступен как свойство, к которому можно получить доступ через внешнюю программу. Вы должны иметь возможность использовать эту информацию в сочетании сdbus-send
(этот ответ о получении свойств с помощью dbus -send может быть полезен ).
Хотя я сам не делал этого с dbus-send
, эти строки Python с библиотекой dbus_next
помогли мне в моем случае использования и могут служить ссылкой для соответствующих имен и путей объектов и интерфейсов.
from dbus_next.aio import MessageBus
bus = await MessageBus().connect()
introspection = await bus.introspect(f'org.pwmt.zathura.PID-{pid}', '/org/pwmt/zathura')
proxy_object = bus.get_proxy_object(f'org.pwmt.zathura.PID-{pid}', \
'/org/pwmt/zathura', \
introspection)
interface = proxy_object.get_interface('org.pwmt.zathura')
return await interface.get_pagenumber()