Страниц: [1]
  Печать  
Автор Тема: функция shutdown_system()  (Прочитано 2011 раз)
ia
Участник
*
Offline Offline

Сообщений: 13


Просмотр профиля
« : Июля 10, 2017, 09:14:16 am »

Проект на С++ для QNX6.5,
компилятор i486-pc-nto-qnx6.5.0-gcc-4.4.2

Хочу завершить работу системы путем вызова shutdown_system().
Компилятор выдает ошибку,
потому что в <sys/shutdown.h> находится описание структуры

typedef struct
{
    uint64_t start_time;
    pid_t pid;
    int8_t class;
    uint8_t padding[3];
    char *name;
} ProcessInfo_t;

Обратите внимание на поле int8_t class.

Можно ли побороть?
Записан
Dark
Sr. Member
****
Offline Offline

Сообщений: 343


Просмотр профиля
« Ответ #1 : Июля 10, 2017, 10:25:32 am »

Можно ли побороть?

Естественно. Используйте Си.
Записан
ia
Участник
*
Offline Offline

Сообщений: 13


Просмотр профиля
« Ответ #2 : Июля 10, 2017, 11:02:58 am »

Да я обычно на Си и работаю.
К сожалению, не в этом проекте.

Можно переименовать поле, например, в class1.
Но не хочется править системные h-файлы.

Меня смущает, что разработчики так неаккуратно выбрали идентификатор.
Записан
darkelf
QOR.Moderator
*****
Offline Offline

Сообщений: 259


Просмотр профиля
« Ответ #3 : Июля 10, 2017, 12:42:52 pm »

Да я обычно на Си и работаю.
К сожалению, не в этом проекте.

Можно переименовать поле, например, в class1.
Но не хочется править системные h-файлы.

Меня смущает, что разработчики так неаккуратно выбрали идентификатор.
как вариант - сделайте отдельный C-шный файл, в котором будет включаться этот заголовочный файл и в котором будет Ваша функция, которая вызывает shutdown_system().
Записан
da-nie
Full Member
***
Offline Offline

Сообщений: 211



Просмотр профиля
« Ответ #4 : Июля 10, 2017, 12:57:13 pm »

А вы вызовите shutdown now через system.
Записан

И день и ночь в пути
ia
Участник
*
Offline Offline

Сообщений: 13


Просмотр профиля
« Ответ #5 : Июля 10, 2017, 07:19:01 pm »

Будете смеяться, но у меня и system() проблемы.
Посмотрите мое соседнее сообщение.
Записан
mike
QOR.Moderator
*****
Offline Offline

Сообщений: 1186


Welcome to Lunatic Asylum.


Просмотр профиля WWW
« Ответ #6 : Июля 11, 2017, 01:19:51 pm »

сделать обёртку типа my_shutdown() которую собить С
Записан
Hed
Full Member
***
Offline Offline

Сообщений: 105



Просмотр профиля
« Ответ #7 : Января 22, 2018, 12:07:03 pm »

Тоже стало интересно, можно ли решить данную задачу.
Если кому любопытно, то вот:

Код:
#include <cstdlib>
#include <iostream>

extern "C" {
#define class pclass
#include <sys/shutdown.h>
#undef class
}

int main(int argc, char *argv[])
{
shutdown_system( SHUTDOWN_REBOOT, FLAG_FAST );

std::cout << "System Shutdown" << std::endl;

return EXIT_SUCCESS;
}

Записан
Страниц: [1]
  Печать  
 
Перейти в: