Типы Python, вызывающие reboot () из libc в Linux

Я пытаюсь вызвать функцию reboot из libc в Python через ctypes , и я просто не могу заставить ее работать. Я ссылался на страницу man 2 reboot ( http://linux.die.net/man/2/reboot ). Моя версия ядра - 2.6.35.

Ниже приведен журнал консоли из интерактивной подсказки Python, где я пытаюсь перезагрузить свою машину - что я делаю не так?

Почему нет? t ctypes.get_errno () работает?

>>> from ctypes import CDLL, get_errno
>>> libc = CDLL('libc.so.6')
>>> libc.reboot(0xfee1dead, 537993216, 0x1234567, 0)
-1
>>> get_errno()
0
>>> libc.reboot(0xfee1dead, 537993216, 0x1234567)
-1
>>> get_errno()
0
>>> from ctypes import c_uint32
>>> libc.reboot(c_uint32(0xfee1dead), c_uint32(672274793), c_uint32(0x1234567), c_uint32(0))
-1
>>> get_errno()
0
>>> libc.reboot(c_uint32(0xfee1dead), c_uint32(672274793), c_uint32(0x1234567))
-1
>>> get_errno()
0
>>>

Изменить:

Напоминание через Nemos - я могу заставить get_errno вернуть 22 (неверный аргумент). Не удивительно. Как мне вызвать reboot () ? Я явно не передаю аргументы, которых ожидает функция. =)

5
задан Community 23 May 2017 в 12:16
поделиться