libimobiledevice というオープン ソース ライブラリを見つけました。restored_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 は plist エラーを意味する -3 を返しました。