2012-01-11 9 views
5

Khi tôi chạy bên dưới mã trong Mã :: Chặn trong hệ điều hành Windows. Tôi đã từng gặp lỗi gọi là tham chiếu không xác định đối với ngã ba(). Tôi đã thiết lập/chọn trình biên dịch GCC làm trình biên dịch mặc định của tôi.Tham chiếu chưa xác định đến ngã ba() trong Mã :: Trình soạn thảo khối trong Windows OS

#include<stdio.h>  
#include<unistd.h>   
void main()   
{  
int x;  
x = 0;  
fork();  
x = 1;   
...  
....  
} 

Xin hãy giúp tôi và cho tôi biết, tôi có thể đúng chương trình/linux unix trong Code :: Blocks trong cửa sổ môi trường?

Và tôi viết một chương trình khác,

main() 
{ 
int x = 0; 
if(x == 0) 
{ 
printf("X = %d", x); 
sleep(1000);//used delay also 
x = 1; 
printf("Now X = %d", x);; 
} 

Ở đây nó mang lại cho eroor rằng tài liệu tham khảo không xác định ngủ() và/* chậm trễ cũng * /.
Xin hãy giúp tôi.

+0

@Vlad: Windows không bị "hỏng do thiết kế"; nó chỉ không quan tâm làm thế nào \ * nix làm việc. Nó có những vấn đề riêng của mình để giải quyết và giải quyết chúng theo cách riêng của mình, mặc dù không phải cách mà một \ nix won có thể thích - hoạt động đủ tốt để cung cấp cho phần lớn thế giới máy tính trong nhiều thập kỷ. Thật ra, trên thực tế, một loạt các công cụ được thực hiện từ 15 năm trở lên đã được phát minh lại hoặc bắt vít trên Linux và \ * BSD. (Hãy xem ... Registry? ACL thực? Native stream? Tương thích nhị phân? Ồ, chờ đã, * * nix * vẫn * không có cái đó ...) – cHao

Trả lời

6

Không, bạn không thể viết mã Unix trên Windows như vậy, cho dù bạn sử dụng IDE nào. Tuy nhiên, bạn nên thử cygwin và điều đó sẽ cung cấp lớp tương thích mà bạn cần.

Bản cập nhật năm 2017: Những ngày này chúng tôi cũng có Windows Subsystem for Linux.

+0

Chúng ta có thể làm chương trình UNIX/LINUX Cygwin không? Nó sẽ cung cấp cho hương vị lập trình Linux hoàn chỉnh? –

+0

Gần như hoàn tất. Bạn vẫn đang chạy trên Windows. Nhưng nó phải là đủ. Có một câu hỏi thường gặp ['cygwin'] (http://cygwin.com/faq/faq-nochunks.html) trả lời một số câu hỏi phổ biến. – cha0site

+0

@ cha0site: Cygwin có thực thi 'clone()' không? Hoặc API "epoll"? BTW, tôi đã thấy một dự án ở đâu đó một thời gian dài trước đây đã có thể chạy hạt nhân Linux như một phần của nhân Windows. Đó là hương vị mát mẻ và gần như đầy đủ. Không chắc chắn nơi nó đứng ngay bây giờ mặc dù. –

2

Không có fork cuộc gọi hệ thống trên Windows.

+1

Có thể có trong một số thư viện, như Cygwin. –

+0

@larsmans: Cửa sổ có bất kỳ lệnh gọi hệ thống nào khác có thể thay thế fork() và sleep() không? –

+1

Có [CreateProcess] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425 (v = vs.85) .aspx), nhưng win32api hoàn toàn khác với API POSIX. – cha0site

0

fork() là cuộc gọi hệ thống unix, do đó, nó chắc chắn sẽ tạo ra tham chiếu không xác định khi bạn thực hiện việc này trong hệ điều hành windows. Windows không hỗ trợ fork().

0

Bạn thử sử dụng cygwin Ngoài ra tôi không chắc chắn, nhưng có tương đương với tên gọi hệ thống này là spawn() trong môi trường ms-dos. bạn có thể thử sử dụng nó.

0

Không có cuộc gọi hệ thống fork() trong cửa sổ, thay vào đó bạn có thể thử Cygwin hoặc pthreads.