Usar io.h no Linux [RESOLVIDO]

1. Usar io.h no Linux [RESOLVIDO]

Carlos Adriano
subwat

(usa Fedora)

Enviado em 23/02/2016 - 09:39h

Eu faço faculdade de coputação, mas eu uso Linux, e gostaria de usar a biblioteca io.h, mas no linux não tem. Como eu posso usar ela? Obrigado!

Uso Ubunto 15.10;


  


2. Re: Usar io.h no Linux [RESOLVIDO]

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 23/02/2016 - 12:17h

Olá!

Você gostaria de utilizar "o que" desta biblioteca? Ela foi escrita para plataforma DOS (a mesma coisa para a conio.h). Dependendo da função é possível até você criar uma função que desempenhe o mesmo papel, ou se tiver dificuldades podemos ajudar a desenvolver ou até achar um equivalente.

*Existe o io.h no linux sim, mas não creio que seja a mesma coisa. Link para ver o source dela: http://lxr.free-electrons.com/source/include/linux/io.h

Espero ter ajudado

[]'s

T+

--

Att,

Thiago Henrique Hüpner

(Mensagem scaneada pelo antivírus........ops! não precisa, afinal eu uso Linux!)



3. Re: Usar io.h no Linux [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 23/02/2016 - 13:45h

Provavelmente ele quer funções de entrada em saída em baixo nível, como open(), close(), read() e write() (ou as variantes com prefixo “_”, como no Windows).

No mundo UNIX, essas funções têm suas declarações em mais de um cabeçalho. Das listadas acima, open() está em <fcntl.h>, e as demais em <unistd.h>. Outras funções usada no DOS podem estar nesses ou em outros cabeçalhos em ambientes UNIX.

Note que o nível de abstração também é diferentes. No DOS e Windows, existe ainda uma camada de tradução para arquivos texto antes de chegar realmente ao I/O em nível de sistema operacional; no UNIX, essas funções são realmente as funções de acesso direto ao SO.


4. Re: Usar io.h no Linux [RESOLVIDO]

Carlos Adriano
subwat

(usa Fedora)

Enviado em 23/02/2016 - 15:22h

Boa tarde amigos, eu ainda não sei para qual funcionamento eu irei usar essa biblioteca, comecei a usa-la hoje, segue o exemplo de código que foi passado hoje.

#define TAM_MAX 50

struct arquivo
{
char nome[30], data[20], tipo; //p:pasta n:arquivo
int tamanho;
};

int carregaPasta (arquivo vet[])
{
int tl=0;
_findatta_t arq;
int prox;
prox = _findfirst("*.*",&arq);

do
{
strcpy(vet[tl].nome,arq.name);
vet[tl].tamanho = arq.size;

strftime (vet[tl].data,20,"%d-%m-%Y %H:%M:%S",localtime(&arq.time_create));

vet[tl++].tipo = (arq.attrib == 32)? 'N' : 'P';
}while (!_findnext(prox,&arq));

return tl;
}

int main()
{
arquivo arquivos[TAM_MAX];
int tl=0;

tl=carregaPasta(arquivos);

for (int i=0; i<tl; i++)
printf ("%-20s %10d %s %c",arquivos[i].name,arquivos[i].tamanho,arquivos[i].data,arquivos[i].tipo);

getch();

return 0;

}


Seria mais para excluir pasta, ver as informações dela, hora que mecheu, data e afins :)


5. Re: Usar io.h no Linux [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 23/02/2016 - 15:40h

Humm...

As funções findfirst() e findnext() são específicas do mundo Microsoft. Seu equivalente no mundo UNIX é a função glob() (junto com a função correspondente de liberação de recursos, globfree()) , cuja declaração está em <glob.h>. Leia a respeito.


EM TEMPO: Se você estiver usando C (e não C++), é errado deixar os parênteses vazios na declaração de main(). O C entende que parênteses vazios significam que a função recebe uma quantidade qualquer de elementos de quaisquer tipos (C++, por outro lado, entende os parênteses vazios como nenhum argumento). Se você não quiser receber argumentos via main() em C, deve declará-la do seguinte modo.

int main(void) 







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts