2013-08-02 5 views
5

C로 간단한 쉘을 코딩하려고합니다.하지만 sys/wait.h를 사용할 수 없습니다. 내 코드 같은 것을 :오류 : 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"); 
    } 

}

내가 DEV-C++ 및 결과를 사용하고 있습니다 것은 :

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

여기에 어떤 문제가 있습니까? 누구나 나를 C 또는 C++로 간단한 셸을 만드는 것에 대한 제안이 있다면 링크 나 코드를주세요. 감사!

+3

음 ... 포함 경로 중 하나의 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는 POSIX API를 완전히 지원하지 않습니다. Windows에서 컴파일하고 실행하려면 코드 포팅을해야 할 것입니다.

아마도 의도 된 환경 (Linux 또는 OSX, 유닉스와 비슷한 환경)에서 빌드하면 더 많은 행운이 생길 것입니다. 당신은 Cygwin에서 제작할 수 있을지도 모르겠지만 그것은 너트를위한 큰 망치입니다.

단순한 (ish) 솔루션은 VMWare의 무료 VMPlayer 또는 VMServer 도구를 사용하여 가상 컴퓨터에서 Linux를 실행하는 것입니다. 그런 다음 VM에서 teh 코드를 빌드하고 실행합니다. VM은 가상 네트워크를 통해 Windows 시스템에 액세스 할 수 있으므로 필요에 따라 결과와 데이터를 Windows 환경에 계속 저장할 수 있습니다.

다른 문제점으로, 프로젝트가 설치 디렉토리 (C : \ Dev-Cpp)의 하위 폴더에있을 때 Dev-C++이 때때로 실패 할 수 있습니다 (명백히 무작위로).

관련 문제