Модераторы: xvr

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Из Windows в *nix. Портирование программы на C++. 
:(
    Опции темы
KaraKum
  Дата 10.1.2011, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Доброе время суток.
Есть программа на C++, написанная изначально с обширным использованием WinAPI (потоки, мьютексы, получение информации о железе...) - нужно её портировать под Linux, FreeBSD (*BSD), Solaris, MacOS, Minix...
Насколько я знаю, все эти ОС-ы являются продолжениями Unix'а.
Будет ли программа компилироваться под этими ОС-и, если портировать под Unix?
Где можно найти полный "API-reference" по Unix? (желательно для "мигрирущующих" с Windows'а).

P.S. портирование подразумевается прямо в коде с использованием #ifdef/#else/#endif..., а не подключением библиотек, абстрагирующих ОС (posix thread's под Windows, например).

Это сообщение отредактировал(а) KaraKum - 10.1.2011, 20:17
PM MAIL WWW   Вверх
boostcoder
Дата 10.1.2011, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



Цитата(KaraKum @  10.1.2011,  13:18 Найти цитируемый пост)
Будет ли программа компилироваться под этими ОС

только тот код, который не использует WinAPI.

Цитата(KaraKum @  10.1.2011,  13:18 Найти цитируемый пост)
Где можно найти полный "API-reference" по Unix?

man + google

Цитата(KaraKum @  10.1.2011,  13:18 Найти цитируемый пост)
P.S. портирование подразумевается прямо в коде с использованием #ifdef/#else/#endif..., а не подключением библиотек, абстрагирующих ОС

сочувствую smile

большинство WinAPI можете найти в wine-dev. такой способ тоже работает.
PM WWW   Вверх
KaraKum
Дата 10.1.2011, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Цитата(boostcoder @  10.1.2011,  14:33 Найти цитируемый пост)
только тот код, который не использует WinAPI.

Это очевидно.


Цитата(boostcoder @  10.1.2011,  14:33 Найти цитируемый пост)
man + google

Бросаю кость для поиска средств получения информации о железе.


Цитата(boostcoder @  10.1.2011,  14:33 Найти цитируемый пост)
большинство WinAPI можете найти в wine-dev. такой способ тоже работает. 

В *nix'е должны использоваться её родные средства - так будто программа была написана для этой ОС (так и есть, но по воле случая первым попался под-руку именно Windows).
PM MAIL WWW   Вверх
Фантом
Дата 10.1.2011, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 1
Всего: 49



Цитата(KaraKum @  10.1.2011,  13:18 Найти цитируемый пост)
Есть программа на C++, написанная изначально с обширным использованием WinAPI (потоки, мьютексы, получение информации о железе...) - нужно её портировать под Linux, FreeBSD, Solaris, MacOS...

Под все сразу?  smile 

Если всерьез, то вариантов два. 

Если программа непосредственно и всерьез не связана с железом, то  сначала аккуратно переписать  все под Windows, избавившись от прямой работы с API. Если связана и от использования API никуда не деться - писать ее функциональный аналог заново, не трогая старый код. Оба варианта почти наверняка обойдутся дешевле, чем попытка переноса "в лоб". 
PM   Вверх
boostcoder
Дата 10.1.2011, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



Цитата(KaraKum @  10.1.2011,  13:44 Найти цитируемый пост)
В *nix'е должны использоваться её родные средства

значит переписать полностью, используя кросс-либы. иных(здравых) вариантов нет.
PM WWW   Вверх
KaraKum
Дата 10.1.2011, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Там кусочками - например такое место: идёт общение клиента с сервером посредством кроссплатформенной библиотеки (ENet) и в один "прекрасный" момент клиент должен передать информацию о своей сетевой карте (MAC-адрес, имя...) и о процессоре (cpuid()) - в Windows'е это где-то 100-150 строк обособленного кода (в конце имеется std::string для каждого этого данного - поэтому такое без проблем можно обернуть в #ifdef/#elif/#endif..., но вот в unix programming reference о железе вообще ничего нету  smile 

P.S. вот потоки есть (POSIX threads) - это, вроде как, стандарт - с этим проблем не должно возникнуть во всех Unix-подобных ОС.

Добавлено через 35 секунд
Цитата(boostcoder @  10.1.2011,  14:51 Найти цитируемый пост)
значит переписать полностью, используя кросс-либы. иных(здравых) вариантов нет. 

Откуда такое умозаключение?
PM MAIL WWW   Вверх
boostcoder
Дата 10.1.2011, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



Цитата(KaraKum @  10.1.2011,  13:56 Найти цитируемый пост)
Откуда такое умозаключение?

изначально отсюда:
Цитата(KaraKum @  10.1.2011,  13:18 Найти цитируемый пост)
WinAPI (потоки, мьютексы, получение информации о железе...)

т.к. я подумал что программа содержит тысячи строк вендового кода.
но, как стало известно позже, вам требуются: cpuid + опции_сети + потоки. тогда не понятно, почему тема тут? в гугле есть абсолютно все.

зы
от скуки наверное.

PM WWW   Вверх
KaraKum
Дата 10.1.2011, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Цитата(boostcoder @  10.1.2011,  15:06 Найти цитируемый пост)
вам требуются: cpuid + опции_сети + потоки.

про железо в Unix'е ничего нет.


Цитата(boostcoder @  10.1.2011,  15:06 Найти цитируемый пост)
не понятно, почему тема тут? в гугле есть абсолютно все.

тогда странно что нет ответа вот с такой ссылкой


Это сообщение отредактировал(а) KaraKum - 10.1.2011, 14:11
PM MAIL WWW   Вверх
boostcoder
Дата 10.1.2011, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



PM WWW   Вверх
KaraKum
Дата 10.1.2011, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Вот информацию о процессорах получить неизвестно как. cpuid() для этого может быть недостаточно - эта команда возвращает только информацию о том процессоре, на котором эта команда вызывается, а на некоторых системах может быть больше одного процессора.
В Unix-спецификации такого что-то нет, хотя должно же быть - Unix ведь как-то определяет сколько процессоров есть в система (чтобы распределять потоки).
PM MAIL WWW   Вверх
panter
Дата 10.1.2011, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 10.1.2011
Где: Санкт-Петербург

Репутация: нет
Всего: нет



cat /proc/cpuinfo и парсить вывод.
PM MAIL ICQ Skype Jabber   Вверх
boostcoder
Дата 10.1.2011, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



ну хз.. точнее может MAKCim сказать.
PM WWW   Вверх
KaraKum
Дата 10.1.2011, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Цитата(panter @ 10.1.2011,  15:32)
cat /proc/cpuinfo и парсить вывод.

А как можно напрямую воспользоваться теми же средствами, которыми был сформирован этот файл?

Это сообщение отредактировал(а) KaraKum - 10.1.2011, 14:40
PM MAIL WWW   Вверх
panter
Дата 10.1.2011, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 10.1.2011
Где: Санкт-Петербург

Репутация: нет
Всего: нет



PM MAIL ICQ Skype Jabber   Вверх
KaraKum
Дата 10.1.2011, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Цитата(panter @ 10.1.2011,  15:45)
http://kobesearch.cpan.org/htdocs/Linux-Cp...ux/Cpuinfo.html

Спасибо за ответ и прямую ссылку!
Нужна информация по всем процессорам в системе. cpuid возвращает информацию только о том процессоре, на котором эта команда была вызвана, а нужна информация (тактовая частота) по всем процессорам в системе (это может быть многопроцессорный сервер или, например, два процессора на одной мат. плате).
PM MAIL WWW   Вверх
boostcoder
Дата 10.1.2011, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



Цитата(KaraKum @  10.1.2011,  15:37 Найти цитируемый пост)
cpuid возвращает информацию только о том процессоре, на котором эта команда была вызвана

покажите WinAPI функцию которая позволяет указать о каком из процессоров получить информацию. просто любопытно.
PM WWW   Вверх
KaraKum
Дата 10.1.2011, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Цитата(boostcoder @ 10.1.2011,  16:40)
Цитата(KaraKum @  10.1.2011,  15:37 Найти цитируемый пост)
cpuid возвращает информацию только о том процессоре, на котором эта команда была вызвана

покажите WinAPI функцию которая позволяет указать о каком из процессоров получить информацию. просто любопытно.

Такой функции я тоже не встречал.
Получить информацию о тактовой частоте каждого процессора можно с помощью функции CallNtPowerInformation().

Добавлено @ 15:50
Код

SYSTEM_INFO systemInfo;
GetSystemInfo(&systemInfo);
const int processorsCount    = systemInfo.dwNumberOfProcessors;

const int processorPowerInformationArraySize    = sizeof(PROCESSOR_POWER_INFORMATION) * processorsCount;
PROCESSOR_POWER_INFORMATION* processorPowerInformationArray    = (PROCESSOR_POWER_INFORMATION*)malloc(processorPowerInformationArraySize);

if(CallNtPowerInformation(ProcessorInformation, NULL, 0, processorPowerInformationArray, processorPowerInformationArraySize) != ERROR_SUCCESS)
{
    char* buffer    = getErrorString(GetLastError());
    messenger->printf("E: CallNtPowerInformation() failed with error \"%s\".\n", buffer);
    LocalFree(buffer);
}

for(int i = 0; i < processorsCount; i++)
{
    ProcessorPower *processorPower    = new ProcessorPower;
    dcuInfo->processorsPower.push_back(processorPower);

    processorPower->number    = processorPowerInformationArray[i].Number;
    processorPower->maxMhz    = processorPowerInformationArray[i].MaxMhz;
    processorPower->currentMhz    = processorPowerInformationArray[i].CurrentMhz;
    processorPower->mhzLimit    = processorPowerInformationArray[i].MhzLimit;
}

free(processorPowerInformationArray);


Добавлено через 6 минут и 36 секунд
Вот этот код, в принципе, можно было бы обернуть в #ifdef WINDOWS/#elif UNIX/#endif... и можно парсить системный файл, но как-то это примитивно и неправильно...  smile 

Это сообщение отредактировал(а) KaraKum - 10.1.2011, 15:53
PM MAIL WWW   Вверх
boostcoder
Дата 10.1.2011, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



Цитата(KaraKum @  10.1.2011,  15:48 Найти цитируемый пост)
Такой функции я тоже не встречал.

т.е. вам не нравится в линухе cpuid из-за того что невозможно указать о каком процессоре получить информацию. в то же время, оказывается, что это невозможно и в вендаусе smile 

зы
а код порадовал. особенно хранение в с++ контейнере сырых указателей. а выделение памяти двумя способами(malloc() и new[]) - так это вообще загадка smile 
это код не портировать нужно, а переписывать.

Это сообщение отредактировал(а) boostcoder - 10.1.2011, 16:05
PM WWW   Вверх
KaraKum
Дата 10.1.2011, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Цитата(boostcoder @  10.1.2011,  16:59 Найти цитируемый пост)
т.е. вам не нравится в линухе cpuid из-за того что невозможно указать о каком процессоре получить информацию. в то же время, оказывается, что это невозможно и в вендаусе smile 

Эмм, я говорил что обо ВСЕХ процессорах нужна информация о тактовой частоте. cpuid - это другая информация о процессоре (марка, модель, брэнд...) - тактовую частоту там даже нельзя получить. cpuid() работает и в линуксе и в виндовсе (и портировать не нужно).


Цитата(boostcoder @  10.1.2011,  16:59 Найти цитируемый пост)
а код порадовал. особенно хранение в с++ контейнере указателей. и выделение памяти двумя способами - так это вообще загадка smile 
это код не портировать нужно, а переписывать. 

Это не ко мне, а к ребятам из Microsoft'а.

Добавлено через 1 минуту и 11 секунд
А к коду претензий нет - всё-таки его нужно портировать, а не переписывать.
PM MAIL WWW   Вверх
Любитель
Дата 10.1.2011, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: нет
Всего: 92



Цитата(boostcoder @  10.1.2011,  15:59 Найти цитируемый пост)
т.е. вам не нравится в линухе cpuid из-за того что невозможно указать о каком процессоре получить информацию. в то же время, оказывается, что это невозможно и в вендаусе smile 

Честно - не проверял (ибо лень), но вообще самое высокоуровневое АПИ - это по идее WMI. Выбираем всё по "select * from Win32_Processor" и используем кучу полей: http://msdn.microsoft.com/en-us/library/aa...v=vs.85%29.aspx (там примеры на VBScript, на С++ побольше кода уйдёт на инициализацию COM, запрос нужных провайдеров и пр., но суть таж).


--------------------
PM MAIL ICQ Skype   Вверх
boostcoder
Дата 10.1.2011, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



Цитата(Любитель @  10.1.2011,  16:09 Найти цитируемый пост)
самое высокоуровневое АПИ - это по идее WMI

WMI - это не совсем WinAPI, мне так кажется..

Добавлено через 6 минут и 34 секунды
в добавок: http://stackoverflow.com/questions/2418921...peed-in-c-linux
PM WWW   Вверх
KaraKum
Дата 10.1.2011, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Странно это как-то - парсить файлы, сгенерированные операционной системой. Ненужный посредник возникает...
Хотя ничего страшного - это всё-равно требуется сделать только один раз - при запуске программы.
Про "adapter info" (имя сетевой карты ("Realtek JBC 5460 ...")) не ясно smile 
PM MAIL WWW   Вверх
cutwater
Дата 10.1.2011, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: нет
Всего: 10



Цитата(KaraKum @  10.1.2011,  15:22 Найти цитируемый пост)
Странно это как-то - парсить файлы, сгенерированные операционной системой.


Успокойтесь. Ничего странного в этом нет. Это вполне нормальный подход для *nix систем. Так что привыкайте.


--------------------
user posted image
PM MAIL   Вверх
KaraKum
Дата 10.1.2011, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



А вот всё что связано с этими файлами - это конкретно нововведение в Linux'е? Или ещё Unix'а?
Как вообще это посредничество в виде файлов называется? Наверное там и про адаптеры (сетевые карты) что-нибудь вычитать (распарсить) можно...
PM MAIL WWW   Вверх
panter
Дата 10.1.2011, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 10.1.2011
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Unix, на сколько я знаю. Кстати, это не совсем файлы. Там много чего можно найти. smile
PM MAIL ICQ Skype Jabber   Вверх
cutwater
Дата 10.1.2011, 17:48 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: нет
Всего: 10



Цитата(KaraKum @  10.1.2011,  16:12 Найти цитируемый пост)
А вот всё что связано с этими файлами - это конкретно нововведение в Linux'е? Или ещё Unix'а?

http://ru.wikipedia.org/wiki/Procfs



--------------------
user posted image
PM MAIL   Вверх
KaraKum
Дата 10.1.2011, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Цитата

она может иметь различное имя в различных ОС (curproc во FreeBSD, self в Linux).

Вот это огорчает.
А мне говорили что FreeBSD может запускать бинарники Linux'а. Походу ошибались...
А как можно узнать в Unix'е имя операционной системы?
PM MAIL WWW   Вверх
fish9370
Дата 10.1.2011, 19:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



Цитата(KaraKum @  10.1.2011,  18:28 Найти цитируемый пост)
А как можно узнать в Unix'е имя операционной системы?


man 2 uname

Код

NAME
       uname - get name and information about current kernel

SYNOPSIS
       #include <sys/utsname.h>

       int uname(struct utsname *buf);

DESCRIPTION
       uname()  returns system information in the structure pointed to by buf.  The utsname struct is defined in
       <sys/utsname.h>:
              struct utsname {
                      char sysname[];
                      char nodename[];
                      char release[];
                      char version[];
                      char machine[];
              #ifdef _GNU_SOURCE
                      char domainname[];
              #endif
              };
       The length of the arrays in a struct utsname is unspecified; the fields are terminated  by  a  null  byte
       (’’ ’).

RETURN VALUE
       On success, zero is returned.  On error, -1 is returned, and errno is set appropriately.




--------------------
undefined
PM MAIL WWW ICQ   Вверх
KaraKum
Дата 10.1.2011, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Спасибо за функцию!

Из статьи про procfs:
Цитата

В современных версиях FreeBSD procfs постепенно ликвидируется.

Чем тогда они в будущем будут заменены во FreeBSD? (или заменены сейчас, раз ликвидируются постепенно?)
PM MAIL WWW   Вверх
fish9370
Дата 10.1.2011, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



Цитата(KaraKum @  10.1.2011,  20:14 Найти цитируемый пост)
Чем тогда они в будущем будут заменены во FreeBSD? (или заменены сейчас, раз ликвидируются постепенно?)


sysfs (/sys) - это еще одно представление информации о железе через файловую систему, но хоронить procfs я бы пока не стал..


--------------------
undefined
PM MAIL WWW ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0750 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.