Estou portando um programa de console relativamente simples escrito para Unix na plataforma Windows ( Visual C ++ 8.0 ). Todos os arquivos de origem incluem "unistd.h", que não existe. Ao removê-lo, recebo reclamações sobre a falta de protótipos para 'srandom', 'random' e 'getopt'. Eu sei que posso substituir as funções aleatórias e tenho certeza de que posso encontrar / hackear uma implementação getopt.
Mas tenho certeza que outros enfrentaram o mesmo desafio. Minha pergunta é: existe uma porta de "unistd.h" para o Windows? Pelo menos um contendo as funções que possuem uma implementação nativa do Windows - não preciso de canos ou bifurcações.
EDIT :
Eu sei que posso criar meu próprio "unistd.h", que contém substituições para as coisas que eu preciso - especialmente neste caso, pois é um conjunto limitado. Mas, como parece um problema comum, eu queria saber se alguém já havia feito o trabalho para um subconjunto maior da funcionalidade.
Mudar para um compilador ou ambiente diferente não é possível no trabalho - estou preso ao Visual Studio.
ssize_t
? Isso não deveria sersize_t
?ssize_t
deve serlong
(ou seja, 64 bits) em alguns sistemas.Tente incluir o
io.h
arquivo. Parece ser o equivalente do Visual Studiounistd.h
.Eu espero que isso ajude.
fonte
#define
tudo comoF_OK
etc, mas tem um monte de coisas comunsEu recomendaria usar mingw / msys como um ambiente de desenvolvimento. Especialmente se você estiver portando programas simples de console. O Msys implementa um shell semelhante ao Unix no Windows, e o mingw é uma porta da coleção de compiladores GNU (GCC) e outras ferramentas de criação do GNU para a plataforma Windows. É um projeto de código aberto e adequado para a tarefa. Atualmente, eu o uso para criar programas utilitários e aplicativos de console para o Windows XP, e certamente tem esse
unistd.h
cabeçalho que você está procurando.O procedimento de instalação pode ser um pouco complicado, mas eu achei que o melhor lugar para começar é no MSYS .
fonte
Eu tropecei nessa discussão enquanto tentava encontrar uma alternativa para o Windows
getpid()
(definida emunistd.h
). Acontece que incluirprocess.h
faz o truque. Talvez isso ajude as pessoas que encontrarem esse tópico no futuro.fonte
Não, no IIRC não há getopt () no Windows.
O Boost , no entanto, possui a biblioteca program_options ... que funciona bem. A princípio, parecerá um exagero, mas não é terrível, especialmente considerando que ele pode lidar com a configuração de opções de programa em arquivos de configuração e variáveis de ambiente, além das opções da linha de comando.
fonte
MinGW 4.x tem em unistd.h
\MinGW\include
,\MinGW\include\sys
e\MinGW\lib\gcc\mingw32\4.6.2\include\ssp
Aqui está o código para a versão MinGW, de Rob Savoye; modificado por Earnie Boyd, Danny Smith, Ramiro Polla, Gregory McGarry e Keith Marshall:
Este arquivo requer a inclusão de
_mingw.h
, que é o seguinte:O restante das inclusões deve ser padrão para o seu ambiente.
fonte
Sim, existe: https://github.com/robinrowe/libunistd
Clone o repositório e inclua
path\to\libunistd\unistd
naINCLUDE
variável de ambiente.fonte
O equivalente
unistd.h
no Windows éwindows.h
fonte
Crie seu próprio cabeçalho unistd.h e inclua os cabeçalhos necessários para os protótipos de funções.
fonte