पर libc से कॉल करना (ctypes
के माध्यम से पाइथन में libc से reboot
फ़ंक्शन को कॉल करने का प्रयास कर रहा हूं और मैं इसे काम पर नहीं ला सकता हूं। मैं man 2 reboot
पृष्ठ (http://linux.die.net/man/2/reboot) का संदर्भ दे रहा हूं। मेरा कर्नेल संस्करण 2.6.35 है।लिथॉन ctypes रीबूट() को लिनक्स
नीचे इंटरैक्टिव पायथन प्रॉम्प्ट से कंसोल लॉग है जहां मैं अपनी मशीन को रीबूट करने की कोशिश कर रहा हूं- मैं क्या गलत कर रहा हूं?
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 reminder- मैं get_errno
प्राप्त कर सकते हैं 22 (अवैध तर्क) वापस जाने के लिए। कोई आश्चर्य नहीं। मुझे reboot()
पर कॉल कैसे करना चाहिए? मैं स्पष्ट रूप से कार्य की उम्मीदों को पारित नहीं कर रहा हूं। =)
क्या आप इस स्क्रिप्ट को चलाने के दौरान रूट हैं? –
एक्सेस से इनकार किया गया? मुझे नहीं पता ... इसे पढ़ने की कोशिश करें (पुनः): http://linux.die.net/man/2/reboot – Manux
भले ही पहुंच अस्वीकार कर दी गई हो, फिर भी कोई व्यक्ति 'EPERM' की रिपोर्ट करने के लिए' errno' की अपेक्षा करेगा। – sarnold