Programar ficheiros e diretórios

Biblioteca C, descritores POSIX, transferências parciais, linhas, metadados e caminhos.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Interfaces

Biblioteca CPOSIXFalha
fopenopenNULL / -1
fread, fwriteread, writeelementos / bytes (ssize_t)
fseek, ftelllseekposição do fluxo / da descrição aberta
fcloseclosefclose descarrega buffers
  • Descritor 0 é válido: testa fd == -1, não !fd.
  • Leitura curta: distingue EOF de erro com feof/ferror. Não mistures C e POSIX na mesma abertura sem coordenar buffer e posição.

Transferências completas

write pode entregar menos bytes. Para nn bytes, repete write(fd, buf+feito, n-feito) e soma só o aceite; trata EINTR e progresso nulo. Se 8 bytes dão 3, continua em buf+3 com 5.

  • Destino de cópia: abre sem truncar, compara st_dev/st_ino via fstat (hard links contam), e só depois trunca.
  • Cada open tem posição própria; dup e herança de fork partilham a descrição aberta.

Posição e linhas

  • lseek devolve a posição absoluta ou (off_t)-1. Para inverter bytes, visita tamanho-1 até 0 com SEEK_SET; um recuo relativo após read relê o mesmo byte. EOF é retorno 0, não um byte.
  • getline (POSIX) reserva ou aumenta o buffer; inclui \n se existir. Liberta no fim; -1 pode ser erro. Últimas kk linhas: duas passagens em ficheiro regular, fila circular em pipe.
  • strstr com sobreposição avança 1 byte após o início; sem ela, avança o padrão. Rejeita padrão vazio.

Metadados e tempo

  • Lê struct stat só após sucesso. stat segue links, lstat não, fstat usa abertura. S_ISREG/S_ISDIR para o tipo.
  • d_name não é caminho: junta o diretório ou usa fstatat(dirfd(d), nome, &info, 0). Repõe errno=0 antes de cada readdir.
  • time_t é civil; CLOCK_MONOTONIC mede durações. localtime: ano desde 1900, mês 0–11.

Cópia robusta.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.