Saya porting program konsol yang relatif sederhana yang ditulis untuk Unix ke platform Windows ( Visual C ++ 8.0 ). Semua file sumber termasuk "unistd.h", yang tidak ada. Menghapusnya, saya mendapat keluhan tentang melewatkan prototipe untuk 'srandom', 'acak', dan 'getopt'. Saya tahu saya bisa mengganti fungsi acak, dan saya cukup yakin saya bisa menemukan / meretas implementasi getopt.
Tapi saya yakin orang lain mengalami tantangan yang sama. Pertanyaan saya adalah: apakah ada port "unistd.h" ke Windows? Setidaknya satu containg fungsi-fungsi yang memang memiliki implementasi Windows asli - Saya tidak perlu pipa atau forking.
EDIT :
Saya tahu saya dapat membuat "unistd.h" saya sendiri yang berisi penggantian untuk hal-hal yang saya butuhkan - terutama dalam kasus ini, karena ini adalah set yang terbatas. Tetapi karena ini sepertinya masalah umum, saya bertanya-tanya apakah seseorang telah melakukan pekerjaan untuk subset fungsi yang lebih besar.
Beralih ke kompiler atau lingkungan yang berbeda tidak dimungkinkan di tempat kerja - Saya terjebak dengan Visual Studio.
ssize_t
? Bukankah itu seharusnyasize_t
?ssize_t
haruslong
(yaitu 64-bit) pada beberapa sistem.Coba sertakan
io.h
file. Tampaknya setara dengan Visual Studiounistd.h
.Saya harap ini membantu.
sumber
#define
semuanya sepertiF_OK
dll, tetapi memiliki banyak hal umumSaya akan merekomendasikan menggunakan mingw / msys sebagai lingkungan pengembangan. Apalagi jika Anda porting program konsol sederhana. Msys mengimplementasikan shell mirip Unix pada Windows, dan mingw adalah port dari koleksi kompiler GNU (GCC) dan alat bantu GNU lainnya untuk platform Windows. Ini adalah proyek open-source, dan cocok untuk tugas itu. Saat ini saya menggunakannya untuk membangun program utilitas dan aplikasi konsol untuk Windows XP, dan pastinya memiliki
unistd.h
header yang Anda cari.Prosedur instalasi bisa sedikit rumit, tetapi saya menemukan bahwa tempat terbaik untuk memulai adalah di MSYS .
sumber
Saya tersandung pada utas ini ketika mencoba untuk menemukan alternatif Windows untuk
getpid()
(didefinisikan dalamunistd.h
). Ternyata termasukprocess.h
melakukan trik. Mungkin ini membantu orang yang menemukan utas ini di masa depan.sumber
Tidak, IIRC tidak ada getopt () di Windows.
Namun, Boost memiliki pustaka program_options ... yang berfungsi dengan baik. Ini akan tampak seperti berlebihan pada awalnya, tetapi tidak mengerikan, terutama mengingat hal itu dapat menangani pengaturan opsi program dalam file konfigurasi dan variabel lingkungan selain opsi baris perintah.
sumber
MinGW 4.x memiliki unistd.h di
\MinGW\include
,\MinGW\include\sys
dan\MinGW\lib\gcc\mingw32\4.6.2\include\ssp
Berikut adalah kode untuk versi MinGW, oleh Rob Savoye; dimodifikasi oleh Earnie Boyd, Danny Smith, Ramiro Polla, Gregory McGarry dan Keith Marshall:
File ini memerlukan penyertaan
_mingw.h
, yaitu sebagai berikut:Sisa dari menyertakan harus standar untuk lingkungan Anda.
sumber
Ya ada: https://github.com/robinrowe/libunistd
Klon repositori dan tambahkan
path\to\libunistd\unistd
keINCLUDE
variabel lingkungan.sumber
Setara dengan
unistd.h
di Windows adalahwindows.h
sumber
Buat tajuk unistd.h Anda sendiri dan sertakan tajuk yang diperlukan untuk prototipe fungsi.
sumber