2016-02-22 2 views
0

У меня есть довольно старый Linux на основе C++ код, который мне нужно портировать на Windows platofrm:Pthreads для Visual C++

sigset_t signalSet; 
sigemptyset(&signalSet); 
sigaddset(&signalSet, SIGALRM); 
pthread_sigmask(SIG_BLOCK, &signalSet, 0); 

Но я не могу найти определение int pthread_sigmask(int how, const sigset_t *set, sigset_t *oldset). Я портировал библиотеку pthread.h на номер Windows. Есть ли простой способ передать это значение Windows/Visual C++, или кто-нибудь знает, где находится определение этой функции?

+0

Вы серьезно не смогли найти http://man7.org/linux/man-pages/man3/pthread_sigmask.3.html? – kfsone

+0

@kfsone - Я нашел этот документ, я надеялся найти тело функции, а не только прототип функции. – Allen

+0

https://android.googlesource.com/platform/bionic/+/2a1bb4e64677b9abbc17173c79768ed494565047/libc/bionic/pthread_sigmask.cpp? (первый результат в поиске исходного кода pthread_sigmask) и http://fossies.org/dox/glibc-2.23/sysdeps_2unix_2sysv_2linux_2sigprocmask_8c_source.html для sigprocmask – kfsone

ответ

2

Не беспокойтесь о сигналах - SIGALRM в любом случае не существует в Windows, и все, что вы делаете, блокирует сигнал тревоги. Вы можете просто заглушить этот звонок.

+0

Сигналы являются частью [ANSI C (C89)] (http: // flash- gordon.me.uk/ansi.c.txt) § 4.7, [те, которые определены стандартом, существуют в Windows] (https://msdn.microsoft.com/en-us/library/xdkz3x12.aspx). –

+0

@JoeWatkins, возможно, вы можете показать мне SIGALRM по вашей собственной ссылке? – SergeyA

+1

Нет, я не могу ... но вы можете отменить утверждение, что сигналы * не существуют * в Windows ... –