Qual foi a razão para a função lseek retornar os descritores de arquivos como inteiros longos? [fechadas]

0

De acordo com o livro Programação Avançada no Ambiente Unix : -

"O caractere l no nome lseek significa '' long integer. '' Antes da introdução do tipo de dados off_t, o argumento offset e o valor de retorno eram inteiros longos. lseek foi introduzido com a Versão 7 quando inteiros foram adicionados a C. (Funcionalidade semelhante foi fornecida na Versão 6 pelas funções seek e tell.) "

Sabemos que há um limite no valor dos descritores de arquivo. Esse valor está no intervalo 0 - OPEN_MAX-1 .So, se as versões anteriores usarem por muito tempo inteiro para descritores de arquivos, isso poderia significar que o número máximo de arquivos que podem ser abertos por processo deve variar de acordo com o formato de palavra do sistema (32 bits ou 64 bits), e isso significa que o número de descritores de arquivos disponíveis poderia ser a ordem de 10 ^ 18. Eu estou certo?

    
por Shanif Ansari 26.08.2017 / 18:07

2 respostas

4
O parâmetro lseek e o valor de retorno de

long são ambos os offsets no arquivo; a adição de long não teve nenhum impacto nos descritores de arquivos.

O tamanho variado da palavra teve um impacto no tamanho das compensações utilizáveis; consulte lseek64 para obter uma solução alternativa.

    
por 26.08.2017 / 19:05
2

Eu acredito que isso seja um mal-entendido.

A citação completa do livro é

The three symbolic constants—SEEK_SET, SEEK_CUR, and SEEK_END—were introduced with System V. Prior to this, whence was specified as 0 (absolute), 1 (relative to the current offset), or 2 (relative to the end of file). Much software still exists with these numbers hard coded.

The character l in the name lseek means ‘‘long integer.’’ Before the introduction of the off_t data type, the offset argument and the return value were long integers. lseek was introduced with Version 7 when long integers were added to C. (Similar functionality was provided in Version 6 by the functions seek and tell.)

Em nenhum lugar do texto diz nada sobre o valor de retorno ser um descritor de arquivo em qualquer ponto no tempo.

    
por 26.08.2017 / 19:24