2010-08-02 38 views
0

如何在不調用任何子進程的情況下使用C++而不是Objetive-C)重新啓動Mac OS X?不在乎是否不合格使用C++調用非正常地重新啓動Mac OS X?

system("reboot"); //Is not acceptable as it relies on invoking a process 
+2

調用進程有什麼問題? – 2010-08-02 10:49:33

+2

現在你爲什麼要這樣做? – wilx 2010-08-02 10:49:53

+2

你不需要編寫C++代碼來做到這一點。只需翻轉電源開關。 – BoltClock 2010-08-02 10:55:22

回答

3

我想不出爲什麼你不希望創建一個新的進程,但如果你真的不想要,那麼execve("reboot",0,0)會運行reboot,替換當前進程。您需要包含<unistd.h>

我假定這是可以在Mac OS;它應該在所有的POSIX平臺上。

UPDATE

看來,Mac OS提供了一個reboot系統調用。 reboot(RB_AUTOBOOT);可能會做你想做的。或者它可能會破壞你的硬盤。在嘗試像這樣操作系統時要非常小心。

+0

我無法調用一個進程。那仍然是。如果我調用一個進程,它將作爲非特權用戶運行,因爲我的應用程序使用suid位運行。 – 2010-08-03 12:05:03

0

JMP 0xFFFF0

:-)