我找到了一个名为 libimobiledevice 的开源库,似乎有一个名为 restore_reboot 的函数可以做到这一点,然后我编写了这样的代码:
void reboot(){
restored_client_t client = NULL;
restored_error_t result = restored_client_new(device, &client, "mylabel");
if(result == 0){
result = restored_reboot(client);
if(result != 0)
fprintf(stderr, "failed to reboot: %d\n", result);
}else{
fprintf(stderr, "failed to create client, %d\n", result);
}
restored_client_free(client);
}
但是失败了,restored_reboot 返回 -3 表示 plist 错误。