2013-08-02 36 views
5

Tôi đang cố gắng mã hóa một vỏ đơn giản bằng C. Nhưng tôi không thể sử dụng sys/wait.h. Mã của tôi giống như:Lỗi: sys/wait.h: Không có tệp hoặc thư mục nào như vậy

#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"); 
    } 

}

Tôi đang sử dụng dev-C++ và kết quả là:

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

gì sai ở đây? Và nếu bất cứ ai có một số gợi ý cho tôi để tạo ra một vỏ đơn giản bằng C hoặc C++ xin vui lòng cho tôi một số liên kết hoặc mã số. cảm ơn!

+3

Vâng ... BẠN CÓ CÓ tệp được gọi là wait.h trong thư mục con được gọi là sys của một trong các đường dẫn bao gồm không? – Vicky

+2

Không có 'fork()' trong các cửa sổ, vì vậy không có 'wait()'. Để được nhiều hơn * IX tương thích bạn có thể muốn chuyển sang sử dụng môi trường Cygwin, cung cấp gcc. Ngoài ra xin vui lòng xem câu trả lời này: http://stackoverflow.com/a/7841250/694576 – alk

+0

xin lỗi tôi nghĩ rằng đó là một thư viện của C/C + +? – Thangnv

Trả lời

4

Từ http://sourceforge.net/p/dev-cpp/discussion/48211/thread/e32720b4

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

Đây là hệ điều hành các tập tin cụ thể, nhưng không phải là tiêu đề của Windows. Windows không hỗ trợ đầy đủ các API POSIX. Bạn có thể sẽ phải thực hiện một số chuyển mã để làm cho nó biên dịch và chạy trên Windows.

Bạn có thể sẽ có nhiều may mắn hơn khi xây dựng nó trong môi trường dự định của nó (Linux hoặc OSX có lẽ, hoặc là một môi trường giống UNIX). Bạn có thể xây dựng nó dưới Cygwin, nhưng đó là một cái búa tạ cho một hạt.

Một giải pháp đơn giản (ish) là chạy Linux dưới Máy ảo (sử dụng công cụ VMPlayer hoặc VMServer miễn phí của VMWare). Và sau đó xây dựng và chạy mã teh trong một máy ảo. VM có thể truy cập máy Windows thông qua một mạng ảo, vì vậy bạn vẫn có thể nhận được kết quả và dữ liệu trên môi trường Windows nếu bạn muốn.

Trên một vấn đề khác, Dev-C++ đôi khi (và rõ ràng là ngẫu nhiên) không thành công khi dự án nằm trong thư mục con của thư mục cài đặt (C: \ Dev-Cpp).

Các vấn đề liên quan