アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語について質問です。
子プロセスを二つ作成するために以下のようなプログラムをしたのですが、エラーが出ます。


Int main (void){
Int N=2, i=0;

for(i=0; i <N ; I++){
int pid;

pid=fork();

if(pid=0){
printf(“ Child %d¥n” , i )


if(pid<0) {
perror(“error”);
return 0;


else {
int state;
wait(int state);
exit(0);


return 0;



エラー内容は

expected expression before ‘int’

です。指摘されてた行がwait を使用した所なのでここが、間違えてると思うのですが、どう訂正すれば良いですか?教えてください、お願いします。

A 回答 (6件)

wait(state)


じゃないの?
上でstate宣言したんだし

あとif(XX=0)って常に0代入してから0かどうかチェックするんだから存在無意味
==なら分かるけど
    • good
    • 2
この回答へのお礼

ご指摘ありがとうございます。
ifのところは書き間違えでした、すみません。
wait(state) にしてみたのですが別のエラーがでました。

incompatible type for argument 1 of ‘wait’

これはどうすれば良いでしょうか?

お礼日時:2019/12/25 17:09

pid_t wait(int *status);



wait関数の引数はintですか?それとも*intですか?

「引数1番目の型がおかしい」と言われているんだから、その関数の呼び出し方ぐらい確認しましょう

wait(&state)
    • good
    • 0
この回答へのお礼

ありがとうございます、コンパイルする事ができました。
ただ、このプログラミングだと出力が

Child 0

となり、ひとつしか子プロセスが生成されてません。
for 文を用いて2つ生成したつもりだったのですが、できない理由教えて頂くと助かります、お願いします。

お礼日時:2019/12/25 18:01

>ただ、このプログラミングだと出力が


>Child 0
>となり、

ifの判定式が=なのは誤り…ということで、
どう修正したんです?

!=なのか、==なのか。
    • good
    • 1
この回答へのお礼

返信ありがとうございます。

==で直しました。

お礼日時:2019/12/25 19:35

>==で直しました



ならば『書いたとおり』正しく動作しているんじゃないですかね。
ただし「あなたの期待した動作」しているかは判りませんが。

コンピュータはバカですから、書かれたとおりに動作します。
いわゆる自殺に相当するストレージの破壊も(ある程度はOSが保護しているとはいえ)実行します。


その上で…
>pid=fork();
>if(pid==0){
> printf(“ Child %d¥n” , i );
>}
が、どのように動作すると思うのか、日本語で説明してみてください。
    • good
    • 0

ここに掲載するソースは手打ちでなく、実際の動作したソースをコピペして貼り付けていただけませんでしょうか。


そうでないと、何処が過ちなのかが特定できません。
また、ソースは一部でなく、全て掲載してください。mainの上にinclude文があるはずです。
    • good
    • 0

waitした後死ぬんだから、ループは―回しかまわらないよ。

    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!