URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 3959
[ Назад ]

Исходное сообщение
"OpenNews: Портируем Win32 приложения под Linux"

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

URL: http://www-106.ibm.com/developerworks/eserver/library/es-Mig...
Новость: http://www.opennet.me/opennews/art.shtml?num=4067


Содержание

Сообщения в этом обсуждении
"Слабовато..."
Отправлено Илья Евсеев , 07-Июл-04 02:38 
Такое ощущение, что автор знает Си довольно посредственно. Например, зачем делать malloc до fork'a, чтобы в родителе тут же вызвать free?

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

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


"Слабовато..."
Отправлено scorp21 , 07-Июл-04 13:14 
ты имел в виду
if (xxx)
  return a;
return b;

или

return xxx ? a : b;

??? ^)


"Слабовато..."
Отправлено я , 25-Июл-06 18:53 
рыскал тут в поисках кой чего - случайно набрел и заинтересовался...прочитал статью.
2 Илья Евсеев - малок дл форк-а сделан правильно

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


"Портируем Win32 приложения под Linux"
Отправлено Шаман , 08-Июл-04 07:00 
Мда... Поверхностные знания. у меня такое ощущение, что мужик знает С не особо хорошо...
Че мне не понравилось if (a) return b; else return c...

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


"Портируем Win32 приложения под Linux"
Отправлено klalafuda , 08-Июл-04 12:59 
---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


"Портируем Win32 приложения под Linux"
Отправлено klalafuda , 08-Июл-04 13:03 

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

// wbr


"Портируем Win32 приложения под Linux"
Отправлено klalafuda , 08-Июл-04 13:05 
---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


"Портируем Win32 приложения под Linux"
Отправлено klalafuda , 08-Июл-04 13:11 
---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