2013-08-02 104 views
5

シンプルなシェルをCでコーディングしようとしていますが、sys/wait.hを使用することはできません。私はDEV-C++を使用していますし、結果はエラー:sys/wait.h:そのようなファイルやディレクトリがありません

#include <stdio.h> 
#include <sys/types.h> 
#include <sys/wait.h> 
#include <unistd.h> 

int main(void) { 
    char command[BUFSIZ]; 
    int status; 
    pid_t pid; 

    for(;;) { 
     printf("simpsh: "); 
     if(fgets(command, sizeof(command), stdin) == NULL) { 
     printf("\n"); 
     return 0; 
    } 

    command[strlen(command) - 1] = '\0'; 
    if((pid = fork()) == 0) 
    execlp(command, command, 0); 

    while(wait(&status) != pid) 
    continue; 

    printf("\n"); 
    } 

}

:ここで

[Error] sys/wait.h: No such file or directory 

何が間違って同じことを私のコード?誰かがシンプルなシェルをCまたはC++で作成するための提案があれば、私にリンクやコードを教えてください。ありがとう!

+3

まあ...含めるパスの1つのsysというサブディレクトリにwait.hというファイルがありますか? – Vicky

+2

ウィンドウの下に 'fork()'はありませんので、 'wait()'もありません。より* IX互換であるためには、gccを提供するCygwin環境を使用するように切り替えることができます。また、この回答を参照してください:http://stackoverflow.com/a/7841250/694576 – alk

+0

申し訳ありません私はそれがC/C + +のライブラリだと思った? – Thangnv

答えて

4

TextTiling/util.c:8:22: sys/wait.h: No such file or directory TextTiling/util.c:26:21: sys/vfs.h: No such file or directory

http://sourceforge.net/p/dev-cpp/discussion/48211/thread/e32720b4から、これらは、OS固有のファイルですが、Windowsのヘッダーではありません。 WindowsはPOSIX APIを完全にサポートしていません。 Windows上でコンパイルして実行するには、おそらくコードを移植する必要があります。

おそらく、それは意図した環境(LinuxやOSXのいずれかのUNIX環境のようなもの)で構築するほうが幸運でしょう。あなたはCygwinの下でそれを構築することができるかもしれませんが、それはナットのための大惨事です。

単純な(ish)解決策は、VMWareの無料VMPlayerまたはVMServerツールを使用して、仮想マシンでLinuxを実行することです。そして、VMでtehコードをビルドして実行します。 VMは、仮想マシンを介してWindowsマシンにアクセスできるため、必要に応じて結果とデータをWindows環境に引き継ぐことができます。

別の問題として、プロジェクトがインストールディレクトリ(C:\ Dev-Cpp)のサブフォルダにある場合、Dev-C++が時々(明らかにランダムに)失敗することがあります。

関連する問題