質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

MinGW

MinGW(ミン・ジー・ダブリュー)は GNUツールチェーンのWindows移植版です。 ランタイムライブラリと開発ツールで構成されています。

Q&A

受付中

MinGWにて#include <sys/wait.h>のインクルードに失敗する。

hashibiro
hashibiro

総合スコア10

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

MinGW

MinGW(ミン・ジー・ダブリュー)は GNUツールチェーンのWindows移植版です。 ランタイムライブラリと開発ツールで構成されています。

2回答

0グッド

0クリップ

366閲覧

投稿2022/12/04 02:05

waitpid() を使用するためsys/wait.hをインクルードすると
以下のエラー文が出ます。
windows環境なためsys/wait.hが使えないのでしょうか。
その場合、必要なインストール方法・gccのオプション指定等もご教授いただければ幸いです。

gcc -pthread .\variablesProc.c -lws2_32 .\variablesProc.c:5:10: fatal error: sys/wait.h: No such file or directory #include <sys/wait.h>

C

1#include <pthread.h> 2#include <unistd.h> 3#include <stdlib.h> 4#include <stdio.h> 5#include <sys/wait.h> 6#include <sys/types.h> 7#define _WIN32_WINNT 0x0501 8#include <winsock2.h> 9 10int varA; 11 12void ProcessFunc(int n){ 13 int varB; 14 15 varB = 4+n; 16 printf("threadFunc-%d-1: varA=%d, varB=%d\n",n,varA,varB); 17 varA = 5+n; 18 printf("threadFunc-%d-2: varA=%d, varB=%d\n",n,varA,varB); 19 sleep(2); 20 printf("threadFunc-%d-3: varA=%d, varB=%d\n",n,varA,varB); 21 varB = 6+n; 22 printf("threadFunc-%d-4: varA=%d, varB=%d\n",n,varA,varB); 23 24 exit(0); 25} 26 27int main(void){ 28 pid_t process1,process2; 29 int varB; 30 31 32 varA = 1; varB = 2; 33 printf("main-1: varA=%d, varB=%d\n",varA,varB); 34 if((process1 = fork()) == 0){ 35 //this is child process 36 processFunc(1); 37 } 38 //this is process 39 sleep(1); 40 varB = 3; 41 42 printf("main-2: varA=%d, varB=%d\n",varA,varB); 43 if((process2 = fork()) == 0){ 44 //this is process 45 processFunc(2); 46 } 47 //this is process 48 waitpid(process1, NULL, 0); 49 waitpid(process2, NULL, 0); 50 printf("main-3: varA=%d, varB=%d\n",varA,varB); 51 52 return 0; 53}

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答2

2

waitpid はシステムコール (をラップした関数) です。 簡単に言えば OS の機能を呼び出す窓口として提供されており OS がその機能を持っていなければ使えません。 結論としては Windows には waitpid は有りません。

同じではありませんが相当する機能と言えるものは Windows にも有り、プロセスの変化 (など) を監視するのは WaitForSingleObject API が使えます。

OS によってプロセスの管理方法やプロセス間通信の仕組みは異なります。 総合的な仕組みが違うのでそれに合わせてプログラムを書き換える必要があります。

または Windows 上で総合的に POSIX 風に振る舞う互換レイヤとして Cygwin があるので手っ取り早く移植することが目的であればこれを導入するというのでもよいでしょう。

投稿2022/12/04 05:36

SaitoAtsushi

総合スコア4947

BeatStar, dodox86👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

0

ぐぐってみると,
https://7shi.hateblo.jp/entry/2012/06/19/213405
のように,process.hをインクルードして_cwait関数でラップしてとりあえず対応している例があるようですね。

投稿2022/12/04 08:29

ujimushi_sradjp

総合スコア1560

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

MinGW

MinGW(ミン・ジー・ダブリュー)は GNUツールチェーンのWindows移植版です。 ランタイムライブラリと開発ツールで構成されています。