Ich portiere ein relativ einfaches Konsolenprogramm, das für Unix geschrieben wurde, auf die Windows-Plattform ( Visual C ++ 8.0 ). Alle Quelldateien enthalten "unistd.h", das nicht existiert. Wenn ich es entferne, bekomme ich Beschwerden über das Fehlen von Prototypen für 'srandom', 'random' und 'getopt'. Ich weiß, dass ich die Zufallsfunktionen ersetzen kann, und ich bin mir ziemlich sicher, dass ich eine getopt-Implementierung finden / hacken kann.
Aber ich bin sicher, dass andere auf die gleiche Herausforderung gestoßen sind. Meine Frage ist: Gibt es einen Port von "unistd.h" für Windows? Mindestens eine enthält die Funktionen, die eine native Windows-Implementierung haben - ich brauche keine Pipes oder Forking.
EDIT :
Ich weiß, dass ich meine eigene "unistd.h" erstellen kann, die Ersatz für die Dinge enthält, die ich brauche - besonders in diesem Fall, da es sich um eine begrenzte Menge handelt. Aber da es ein häufiges Problem zu sein scheint, habe ich mich gefragt, ob jemand die Arbeit bereits für eine größere Teilmenge der Funktionalität erledigt hat.
Ein Wechsel zu einem anderen Compiler oder einer anderen Umgebung ist bei der Arbeit nicht möglich - ich bleibe bei Visual Studio.
ssize_t
? Soll das nicht seinsize_t
?ssize_t
solltelong
auf einigen Systemen (dh 64-Bit) sein.Versuchen Sie, die
io.h
Datei einzuschließen. Es scheint das Äquivalent von Visual Studio zu seinunistd.h
.Ich hoffe das hilft.
quelle
#define
alles wieF_OK
etc, aber es hat viele gemeinsame SachenIch würde empfehlen, mingw / msys als Entwicklungsumgebung zu verwenden. Vor allem, wenn Sie einfache Konsolenprogramme portieren. Msys implementiert eine Unix-ähnliche Shell unter Windows, und mingw ist ein Port der GNU Compiler Collection (GCC) und anderer GNU-Build-Tools für die Windows-Plattform. Es ist ein Open-Source-Projekt und für die Aufgabe gut geeignet. Ich verwende es derzeit, um Hilfsprogramme und Konsolenanwendungen für Windows XP zu erstellen, und es hat mit Sicherheit den
unistd.h
Header, den Sie suchen.Das Installationsverfahren kann etwas schwierig sein, aber ich habe festgestellt, dass MSYS der beste Startpunkt ist .
quelle
Ich bin auf diesen Thread gestoßen, als ich versucht habe, eine Windows-Alternative für
getpid()
(definiert inunistd.h
) zu finden. Es stellt sich heraus, dass das Einschließenprocess.h
den Trick macht. Vielleicht hilft dies Menschen, die diesen Thread in Zukunft finden.quelle
Nein, IIRC gibt es unter Windows kein getopt () .
Boost hat jedoch die Bibliothek program_options ... die in Ordnung funktioniert. Es wird auf den ersten Blick wie ein Overkill erscheinen, aber es ist nicht schrecklich, insbesondere wenn man bedenkt, dass es neben Befehlszeilenoptionen auch das Festlegen von Programmoptionen in Konfigurationsdateien und Umgebungsvariablen handhaben kann.
quelle
MinGW 4.x hat unistd.h in
\MinGW\include
,\MinGW\include\sys
und\MinGW\lib\gcc\mingw32\4.6.2\include\ssp
Hier ist der Code für die MinGW-Version von Rob Savoye; modifiziert von Earnie Boyd, Danny Smith, Ramiro Polla, Gregory McGarry und Keith Marshall:
Diese Datei erfordert die Aufnahme von
_mingw.h
:Der Rest der Includes sollte für Ihre Umgebung Standard sein.
quelle
Ja da ist: https://github.com/robinrowe/libunistd
Klonen Sie das Repository und fügen Sie
path\to\libunistd\unistd
es derINCLUDE
Umgebungsvariablen hinzu.quelle
Das Äquivalent zu
unistd.h
unter Windows istwindows.h
quelle
Erstellen Sie Ihren eigenen unistd.h-Header und fügen Sie die erforderlichen Header für Funktionsprototypen hinzu.
quelle