Я не могу понять, почему вы не хотите создавать новый процесс, но если вы действительно этого не хотите, то execve("reboot",0,0)
запустит reboot
, заменив текущий процесс. Вам нужно будет включить <unistd.h>
.
Я предполагаю, что это доступно в Mac OS; это должно быть на всех платформах POSIX.
UPDATE
Похоже, что Mac OS имеет системный вызов reboot
. reboot(RB_AUTOBOOT);
может делать то, что вы хотите. Или это может испортить ваш жесткий диск. Будьте очень осторожны при работе с такой операционной системой.