views:

115

answers:

2

How do I restart Mac OS X using C++ (not Objetive-C) without invoking any child processes? Don't care if it's ungraceful.

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

JMP 0xFFFF0

:-)

Mau
+2  A: 

I can't think why you wouldn't want to create a new process, but if you really don't want to, then execve("reboot",0,0) will run reboot, replacing the current process. You'll need to include <unistd.h>.

I'm assuming this is available on Mac OS; it should be on all POSIX platforms.

UPDATE

It appears that Mac OS has a reboot system call. reboot(RB_AUTOBOOT); might do what you want. Or it might trash your hard drive. Be very careful when trying to work against the operating system like this.

Mike Seymour
I can't invoke a process. That still does it. If I invoke a process it runs as an unprivileged used because my application is run with a suid bit.
Nick Brooks