2015-05-21 43 views
1

我使用MinGW的:使用MinGW POSIX問題(sem_timedwait)

GNU讓4.1

專爲x86_64的-W64-mingw32的

我注意到,sem_timedwait不功能(它返回-1)。 我對sem_wait或sem_signal沒有任何問題。

代碼例如:

struct timespec timeSpec; 
int rc = 0; 
timeSpec.tv_sec = 1000; 
timeSpec.tv_nsec = 0; 
rc = sem_timedwait(pSemId,&timeSpec); 

CC = x86_64的-W64-的mingw32-GCC

+0

什麼是'errno'設置? – Dummy00001

+0

printf(「%s」,strerror(errno)) - >「未知錯誤」 「未知錯誤」是errno的結果 – Sharon

+0

errno的實際數值會更有幫助,因爲strerror )'不保證每一個可能的描述。有些描述完全是令人困惑的。用'errno'武裝你可以檢查Mingw標題來查看代碼對應的錯誤。這應該有助於縮小您對問題的搜索範圍。 – Dummy00001

回答

1

確定, 時間應該是相和不absolote。 tm = time(NULL); timeSpec.tv_sec = tm + 10; timeSpec.tv_nsec = 0; rc = sem_timedwait(pSemId,& timeSpec);

它解決了這個問題。

+0

很高興你解決了這個問題!使用絕對時間的時間相當滯後,其中每個其他類似函數都使用相對時間。 – Dummy00001