The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Портируем Win32 приложения под Linux

05.07.2004 12:49

В статье "Migrating Win32 C/C++ applications to Linux" разбирается пример перевода Win32 приложений на C/C++ в вид пригодный для сборки под Linux. Рассмотрены аналоги Win32 функций для работы с процессами, тредами и разделяемой памятью.

  1. Главная ссылка к новости (http://www-106.ibm.com/develop...)
Лицензия: CC-BY
Тип: английский / Практикум
Короткая ссылка: https://opennet.ru/4067-porting
Ключевые слова: porting, linux, win, gcc, thread, ipc, proccess
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (8) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Илья Евсеев (?), 02:38, 07/07/2004 [ответить]  
  • +/
    Такое ощущение, что автор знает Си довольно посредственно. Например, зачем делать malloc до fork'a, чтобы в родителе тут же вызвать free?

    if (a) return b; else return c; тоже не есть образец высокого стиля.

    В целом статья неглубокая. Тому, кто почувствует в ней необходимость, скорее можно посоветовать winelib.

     
     
  • 2.2, scorp21 (??), 13:14, 07/07/2004 [^] [^^] [^^^] [ответить]  
  • +/
    ты имел в виду
    if (xxx)
      return a;
    return b;

    или

    return xxx ? a : b;

    ??? ^)

     
  • 2.8, я (?), 18:53, 25/07/2006 [^] [^^] [^^^] [ответить]  
  • +/
    рыскал тут в поисках кой чего - случайно набрел и заинтересовался...прочитал статью.
    2 Илья Евсеев - малок дл форк-а сделан правильно

    остальное не смотрел - времени не хватило (статья не полезная - слишком утрированно)

     

  • 1.3, Шаман (?), 07:00, 08/07/2004 [ответить]  
  • +/
    Мда... Поверхностные знания. у меня такое ощущение, что мужик знает С не особо хорошо...
    Че мне не понравилось if (a) return b; else return c...

    Как было замечено мужиком выше меня, не образец высокого стиля!

     
  • 1.4, klalafuda (?), 12:59, 08/07/2004 [ответить]  
  • +/
    ---cut---
    If the function succeeds, use the TerminateThread function to release the primary thread on the same process. The TerminateProcess function is then used to unconditionally cause a process to exit. It initiates termination and returns immediately.
    ---cut---

    TerminateProcess - отнюдь не самый лучший вариант для завершения. это как саблей по яйцам..

    // wbr

     
  • 1.5, klalafuda (?), 13:03, 08/07/2004 [ответить]  
  • +/

    использование _beginthread/_endthread как основное API для порождения потоков в win32 ? просто кашмар..

    // wbr

     
  • 1.6, klalafuda (?), 13:05, 08/07/2004 [ответить]  
  • +/
    ---cut---
    int             rc = 0;

    if (rc = pthread_attr_init(&attr))      
         return RC_THREAD_NOT_CREATED);  // EINVAL, ENOMEM
          
    if (rc = pthread_attr_setstacksize(&attr, stacksize))
         return RC_THREAD_NOT_CREATED);   // EINVAL, ENOSYS
        
    if (rc = pthread_create(threadId, &attr, (void*(*)(void*))thrdproc,
       thrdparam))
    ---cut---

    1. warning - assignment in conditional expression
    2. на кой ему тут вообще нужен rc ?

    // wbr

     
  • 1.7, klalafuda (?), 13:11, 08/07/2004 [ответить]  
  • +/
    ---cut---
    The Win32 SleepEx function suspends the current thread until one of the following occurs:

    An I/O completion callback function is called
    An asynchronous procedure call (APC) is queued to the thread
    The minimum time-out interval elapses

    Linux uses the sched_yield to do the same thing.
    ---cut---

    sched_yield() и близко не лежал рядом с SleepEx(). просто по определению SleepEx() и sched_yield(). select() еще куда не шло.

    // wbr

     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2022 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру