2012-06-07 54 views
3

我使用的內存段編寫一個程序,但問題是我的wait()拋出了我一個錯誤C的誤差 - 等待()

錯誤:

ks.c:24:2: error: incompatible type for argument 1 of ‘wait’ 
/usr/include/x86_64-linux-gnu/sys/wait.h:116:16: note: expected ‘__WAIT_STATUS’ but argument is of type ‘int’ 
s.c:13:6: warning: unused variable ‘w’ [-Wunused-variable] 

行代碼很簡單wait(1);和我有includeted該項目爲什麼我得到的錯誤都neccesarry ehaders,因爲它應該像這樣工作... 進口

#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 
#include <sys/types.h> 
#include <sys/ipc.h> 
#include <sys/shm.h> 
#include <sys/wait.h> 
#include <errno.h> 
#include "st.h" 
+3

仔細看看'wait'的定義。 –

+1

愚蠢的問題,但你並不是指「睡眠」,是嗎? –

+0

不,我的老師一直在等待(1)或(10) –

回答

4

如果您檢查文檔wait,它需要的參數是指向int的指針在哪裏設置狀態。由於這是作業,我會讓你自己完成解決方案。

+0

我用在這個等待(),因爲我的老師在演講中顯示soem的例子,他們工作...這就是爲什麼我很好奇爲什麼它不適合我 –

+2

@ user1388172:你應該問你的老師澄清爲什麼他的代碼工作... –

2

如果你看看wait的手冊頁,它需要一個指向一個整數的指針。

所以,你的代碼應該讀一些類似

int status; 
wait(&status); 
+1

我們有這樣的創造性的例子:) –

0

等待函數實際上一個指針指向一個int並返回該指針線程的孩子的退出狀態。

嘗試這樣的事情

int status; 
wait(&status); 
+0

我用這個等待(),因爲我的老師在演講期間顯示soem的例子他們工作......這就是爲什麼我很好奇爲什麼它不適合我 –

0

仔細閱讀錯誤消息。它說incompatible type for argument 1 of ‘wait’然後note: expected ‘__WAIT_STATUS’ but argument is of type ‘int’。然後你可以看一下手冊$ man wait,其中一切都很簡短地解釋 - 參數和返回類型,典型值等。你甚至可能會很幸運,找到一個甚至沒有搜索網絡的例子。
如果你錯過了一個.h eader文件,你將得到不同的錯誤信息