0
if((sem_init(sem, 1, 1)) == 1) perror("error initiating sem");
如果我包含這行代碼,我的程序只需啓動和退出。我剛開始學習如何使用信號量。我正在使用cygwin,並且當printf的這個print打印到控制檯上時,這行代碼被註釋掉了,但是當包含這個時,沒有任何反應。cygwin c sem_init
我做了以下獲得cygserver going-
CYGWIN=server
ran /bin/cygserver-config
ran /usr/sbin/cygserver
爲配置故稱cygserver已經運行 而對於sygserver它saids-
initailaizing complete
failed to created named pipe: is the daemon already running?
fatal error on IPC transport: closing down
任何想法?
閱讀[手冊頁](http://pubs.opengroup.org/onlinepubs/009695399/functions/sem_init.html)並檢查返回值。 –
對不起,新增到stackoverflow。不知道'接受'在哪裏。我已經閱讀了sem_init()的手冊頁。 對不起,剛剛注意到返回值'1'應該是'-1',但是這並沒有改變。我在'printf'之後放了'\ n',出於某種原因,現在打印出來了。它正在發展中...... – RileyVanZeeland
它沒有打印,因爲當stdout是一個終端時,printf會將其輸出緩存到內存中,並且只有在打印新行時,其緩衝區變滿,或者用'fflush( 3)'。如果您的程序在緩衝區刷新之前崩潰,則緩衝的輸出永遠不會顯示。在調試崩潰問題時,您應該始終確保刷新緩衝區,以確保崩潰的位置在您認爲崩潰的位置。 –