4

メモリセグメントを使用してプログラムを作成しましたが、問題は、wait()がエラーをスローすることです。

エラー:

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); で、プロジェクトのすべてのneccesarry ehadersを含めましたが、このように機能するはずなので、なぜそのエラーが発生するのですか... imports

#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"
4

4 に答える 4

4

のドキュメントを確認するとwait、パラメーターとして受け取るのは、ステータスを設定する int へのポインターです。これは宿題なので、自分で解決策をまとめさせてください。

于 2012-06-07T17:32:55.760 に答える
2

waitのマニュアルページを見ると、整数へのポインタが必要です。

したがって、コードは次のようになります

int status;
wait(&status);
于 2012-06-07T17:33:53.383 に答える
0
于 2012-06-07T17:45:38.393 に答える
0

待機関数は、実際には int へのポインターを取り、そのポインターでスレッドの子の終了ステータスを返します。

このようなことを試してください

 int status;
 wait(&status);
于 2012-06-07T17:34:24.787 に答える