UFRJ IM - DCC. Departamento de Ciência da Computação. Tópicos Especiais em Programação. 12/4/aa Profª Valeria Menezes Bastos 1

Tamanho: px
Começar a partir da página:

Download "UFRJ IM - DCC. Departamento de Ciência da Computação. Tópicos Especiais em Programação. 12/4/aa Profª Valeria Menezes Bastos 1"

Transcrição

1 UFRJ IM - DCC Departamento de Ciência da Computação Tópicos Especiais em Programação 12/4/aa Profª Valeria Menezes Bastos 1

2 Manipulação de arquivos Sistemas de Arquivos UNIX Trabalhando com arquivos Conceitos básicos sobre FS Sistemas de arquivos UNIX Diretórios, arquivos e dispositivos Syscalls e funções Chamadas ao sistema (write, read, open, etc.) Streams, chamadas à standard I/O (stdin, stdout, stderr) Tratamento de exceções (errno) Chamadas de sistema avançadas (varrendo diretórios, tratamento de erros) 2

3 Organização multinível aplicação FS lógico organização de arquivos diretórios, nomes de arquivos, proteção mapeamento de blocos lógicos em blocos físicos e gerência do espaço livre no disco FS básico comandos genéricos para escrita e leitura de blocos físicos Controle de E/S dispositivos drivers de dispositivos e rotinas de tratamento de interrupção 3

4 Sistema de Arquivos Componentes Arquivos Diretório organiza e fornece informações sobre todos os arquivos do sistema Partições disco lógico ou volume: conjunto de diretórios Arquivo Coleção de registros relacionados, definidos por seu criador Tipo abstrato de dado 4

5 FS Linux Linux mantém o modelo de FS UNIX Um arquivo pode ser qualquer coisa capaz de manipular a saída e a entrada de um fluxo de: Objetos armazenados em disco Dados buscados pela rede Drivers de dispositivos Canais de comunicação entre processos 5

6 Atributos de arquivos Nome Tipo Localização Tamanho Proteção Hora, data... pointer para um dispositivo e localização do arquivo nesse dispositivo informação para controle de acesso: read, write, execute,... criação, última modificação, últimos atributos modificados dependente do sistema 6

7 Operações sobre arquivos criar escrever ler reposicionar dentro do arquivo remover truncar renomear alocar espaço e criar uma entrada no diretório write pointer read pointer liberar espaço e apagar a entrada no diretório pode ser o mesmo ponteiro todos os atributos ficam iguais menos o tamanho (igual a zero) 7

8 ... Mais operações sobre arquivos copiar abrir (open) fechar (close) O SO mantém informação sobre arquivos abertos em uma tabela open file table a abertura retorna um índice para a tabela (descritor de arquivo ou file descriptor) básicas: open close read write ioctl passa controles específicos para um driver de dispositivo 8

9 Tipos de arquivo UNIX extensão exe, com, bin, obj, asm, bat, txt, doc, lib, ps, devi, gif, arc, zip,... extensões podem ser usadas mas não são reconhecidas números mágicos número no início de alguns arquivos que identifica seu tipo tipos suportados arquivos regulares dispositivos de bloco e de caractere 9

10 Estrutura de arquivos Formato especial determinado pelo SO imposição de estrutura pelo SO por ex.: para facilitar a carga na memória e localização da primeira instrução a ser executada de um arquivo executável quanto maior a quantidade de estruturas suportadas mais complexo o SO UNIX: uma única estrutura sequência de bytes (8 bits) 10

11 Blocos Registros lógicos UNIX: registro lógico é 1 byte blocos físicos por ex.: setor 512 bytes cluster no DOS ou data block no UNIX todas as operações de E/S de baixo nível são realizadas sobre um bloco (e não sobre frações de bloco) Os programas trabalham com funções de mais alto nível sobre registros lógicos 11

12 Diretórios Diretório Guarda informações de todos os arquivos no volume (ou partição) Pode ser visto como uma tabela de símbolos que mapeia nomes de arquivos para as entradas da tabela cada entrada contém os atributos de um arquivo No UNIX, o diretório também é um arquivo, entretanto é necessário usar operações especiais para sua manipulação (opendir(), readdir(),...) 12

13 Diretórios Operações sobre o diretório procurar por um arquivo criar um arquivo deletar um arquivo listar o diretório e adicionar ao diretório e remover do diretório renomear um arquivo percorrer o sistema de arquivos Para fazer backup, por exemplo 13

14 Hierarquia Diretório em árvore root bin etc dev usr home current directory sh local etc bin 14

15 Subdiretórios subdiretórios Permitem ao usuário estabelecer uma organização lógica para seus arquivos Subdiretórios são também arquivos, com formato root (/) específico estabelecido pelo sistema Topo da hierarquia Facilitam a localização dos arquivos man hier - descrição da hierarquia de diretórios no sistema Contém todos os arquivos do sistema 15

16 Diretórios Diretório atual Diretório em uso (no momento) Referências a arquivo são buscadas no diretório atual através de syscall cd - chama a syscall correspondente pathnames Current directory./ absoluto começa na raiz e segue até a folha relativo começa no diretório atual./ 16

17 Operações sobre Diretórios Deletar subdiretório só permitir quando estiver vazio deletar todo o seu conteúdo incluindo subdiretórios Acessar arquivos de outros usuários conhecer o caminho (path) rm (remove) rmdir 17

18 Diretório como grafo acíclico Um arquivo (ou subdiretório) pode pertencer a dois subdiretórios diferentes Generalização da estrutura em árvore Implementação: Através de links Ponteiro para o arquivo (path) Usando o comando ln na shell é possível fazer links para o mesmo arquivo de diretórios diferentes hardlinks e symlinks 18

19 Diretório como grafo acíclico root bin etc dev usr home sh local etc bin 19

20 Dispositivos Dispositivos de bloco Dispositivos de caractere acesso direto ou sequencial /dev Cada dispositivo é representado em /dev como um arquivo de dispositivo quando se lê ou escreve em um arquivo de dispositivo, o dado vem de ou vai para o dispositivo que representa Normalmente arquivos de dispositivo existem, embora o próprio dispositivo não esteja instalado um arquivo como /dev/das não significa que você realmente tenha um disco rígido SCSI 20

21 Dispositivos Arquivos em /dev Nenhum programa especial é necessário para ter acesso a dispositivos Por ex.: enviar um arquivo à impressora $ cat filename > /dev/lpt1 $ Mas não é uma boa ideia ter várias pessoas enviando arquivos para a impressora ao mesmo tempo Normalmente se usa lpr Este programa garante que só um arquivo está sendo impresso de cada vez 21

22 Dispositivos dispositivos aparecem como arquivos no diretório /dev Fácil ver quais arquivos de dispositivo existem Por ex.: usar ls $ ls l /dev/cua0 crw-rw-rw- 1 root uucp 5, 64 Nov /dev/cua0 $ a primeira coluna contém o tipo do arquivo e suas permissões Tipo do arquivo: c em crw-rw-rwc, um dispositivo de caractere - para arquivos regulares d para diretórios b para dispositivos de bloco 22

23 Dispositivos 3 arquivos em /dev 3 arquivos de dispositivos interessantes /dev/console único no sistema Console do sistema Mensagens de erro são enviadas para a console /dev/tty vários no sistema alias para o terminal de controle de um processo /dev/null quando usado como entrada fornece EOF Toda a informação escrita é perdida 23

24 Dispositivos Mounting mounting montar um sistema de arquivo é análogo a abrir um arquivo É dado um nome ao dispositivo mount point localização na estrutura de diretório para anexar o FS montado É verificado se o dispositivo contém um FS válido O FS é montado no mount point DOS e Windows não possuem mounting o usuário troca o CD e o SO não percebe 24

25 Arquivos Proteção de arquivos segurança contra acesso impróprio controle de acesso bits de permissão de acesso dependente da identidade do usuário lista de acesso em sistema multiusuário read (r) write (w) execute (x) Associada a cada arquivo e/ou diretório Especifica o user e o tipo de acesso permitido Problema: criação e gerência da lista 25

26 Arquivos Permissão de acesso Lista de acesso para 3 tipos de usuários owner group others usuário que criou o arquivo usuários que compartilham o arquivo e necessitam de acessos similares todos os usuários do sistema Exige rígido controle de membership pelo administrador do sistema 26

27 Arquivos 3 atributos para arquivos e diretórios: rwx para cada Tipo de user (owner, group, others) umask rwx rwx rwx owner group others 27

28 inode inode index node ou information node Bloco que contém ponteiros para todos os arquivos e diretórios Contém a localização dos blocos físicos Permite o acesso direto a blocos de um arquivo Mantém também outras informações sobre o arquivo Cada arquivo tem seu próprio inode Quando o arquivo é criado, todas as entradas do index contém nil O inode é único por arquivo Para verificar o número do inode de um arquivo usando o comando ls -i 28

29 Alocação indexada diretório arquivo inode arqx

30 Inode UNIX modo owners timestamps size block count direct blocks data data... data 12 blocos de dados data... BSD UNIX (4.2) tamanho mínimo do bloco é 4K data data single indirect double indirect triple indirect data... data data... data 30

31 Inode LINUX tipo/permissões user (UID) tamanho do arquivo horário de acesso horário de criação horário de modificação horário de deleção group (GID) cont. links número de blocos atributos do arquivo reservado 12 blocos diretos blocos indiretos simples blocos indiretos duplos blocos indiretos triplos versão do arquivo arquivo ACL diretório ACL 127 endereço fragmento reservado ACL access control list 31

32 UNIX fs dois objetos principais arquivos diretórios data blocks arquivos são compostos por arquivos e diretórios são representados por campo de tipo do inode diretório é apenas um caso especial de arquivo Distingue entre arquivos e diretórios 32

33 Diretórios. e.. primeiros dois nomes em cada diretório pathname e diretório atual O usuário faz referência a um arquivo pelo seu pathname O sistema de arquivos usa o inode mount point. link para o próprio diretório.. link para o diretório pai Em qualquer diretório pode ser encontrado um ponto de montagem onde ocorre a mudança para outra estrutura de diretório 33

34 Links Um arquivo pode ter vários nomes Vários nomes podem representar o mesmo inode Um arquivo é representado univocamente pelo seu inode Depois de aberto, um arquivo é referenciado pelo seu file descriptor ou stream hard links Entradas nos diretórios que apontam para um inode symbolic links Arquivos especiais Contém apenas o pathname de um arquivo estabelecendo um link simbólico 34

35 FS lógico x FS físico FS lógico o que o usuário conhece FS físico dependente do dispositivo físico Um FS lógico pode ser composto por vários FS físicos Dispositivos físicos Dispositivo de armazenamento HD, CD, DVD, etc... Dispositivos lógicos Partição de um dispositivo físico 35

36 FS lógico para dispositivo físico FS lógico 36

37 FS lógico para dispositivo físico FS lógico FSs 37

38 FS lógico para dispositivo físico FS lógico FSs dispositivos lógicos 38

39 FS lógico para dispositivo físico FS lógico FSs dispositivos lógicos discos particionados root swap 39

40 Manipulação de arquivos Sistemas de Arquivos UNIX Trabalhando com arquivos Conceitos básicos sobre FS Sistemas de arquivos UNIX Diretórios, arquivos e dispositivos Syscalls e funções Chamadas ao sistema (write, read, open, etc.) Streams, chamadas à standard I/O (stdin, stdout, stderr) Tratamento de exceções (errno) Chamadas de sistema avançadas (varrendo diretórios, tratamento de erros) 40

41 System calls e drivers programas do usuário biblioteca system calls espaço do usuário open close read write ioctl device drivers dispositivos (hardware) kernel open, close, read, write são genéricas, valem para qualquer dispositivo ioctl é específica, torna visível certas características peculiares do hardware 41

42 Syscalls read write open close ioctl trunc lseek dup dup2 básicas quase todas se encontram em unistd.h 42

43 Funções da biblioteca Usar system calls diretamente pode ser ineficiente Complexidade de programação de baixo nível Controle de tamanho de bibliotecas bibliotecas Forma eficiente, de mais alto nível Geralmente bem documentado include padrão 43

44 Operações básicas Operações básicas invocando system calls Mais baixo nível de operação Na prática O uso de syscalls e funções segue mais ou menos o mesmo padrão Arquivos precisam ser abertos antes de serem usados e precisam ser fechados no final Erros (exceções) são indicados de forma padrão errno: variável global que indica erro 44

45 Descritores de arquivos Mapeamento de descritores para inodes system call usa descritor como argumento kernel usa descritor como índice na tabela de arquivos abertos do processo cada entrada aponta para uma estrutura, que aponta para o inode correspondente A tabela de arquivos abertos suporta um número fixo limitado de arquivos Quando um programa inicia 3 arquivos são abertos: stdin, stdout e stderr fd0, fd1 e fd2 respectivam/ 45

46 Descritores & inodes tabela de arquivos abertos do processo lista de inodes na memória blocos de dados read (fd,... lista de inodes espaço do usuário file-structure do processo espaço do sistema sync espaço em disco 46

47 struct inode inode contém informações sobre um arquivo ou diretório no disco. struct inode { struct hlist_node i_hash; /* tabela hash */ struct list_head i_list; /* lista de inodes */ struct list_head i_dentry; /* lista de dentries */ unsigned long i_ino; /* numero do inode */ umode_t i_mode; /* permissões de acesso */ unsignedint i_nlink; /* numero de hard links */ uid_t i_uid; /* id de usuário do proprietário */ gid_t i_gid; /* id de grupo do properietário */ kdev_t i_rdev; /* nodo do dispositivo real */ loff_t i_size; /* tamanho do arquivo em bytes */ struct timespec i_atime; /* data do ultimo acesso */ struct timespec i_mtime; /* data da ultima modificação */ unsigned long i_blksize; /* tamanho do bloco em bytes */ unsigned long i_blocks; /* tamanho do arquivo em bytes */ unsignedshort i_bytes; /* bytes consumidos */ struct inode_operations *i_op; /* tabela de operações do inode */ struct file_operations *i_fop; /* operações padrão do inode */ struct super_block *i_sb; /* superbloco associado */ struct address_space *i_mapping; /* mapeamento associado */ struct address_space i_data; /* mapeamento para o dispositivo */ unsigned long i_state; /* identificadores de estado (flags) */ unsignedint i_flags; /* identificadores do sistema de arquivos (flags) */ }; 47

48 file-structure Mantida pelo sistema uma estrutura por processo Não acessível aos aplicativos (programas no espaço do usuário) Guarda informações relativas ao processo que não podem ser mantidas no inode Por exemplo, um arquivo aberto por dois processos o inode é um só Cada processo usa um file-offset diferente para as operações de read e write sobre o arquivo file-offset: posição relativa dentro do arquivo 48

49 Acesso a arquivos: write Corresponde a syscall write baixo nível #include <unistd.h> size_t write(int fd, const void *buf, size_t nbytes); Escreve os primeiros nbytes de buf no arquivo com descritor fd retorna o número de bytes realmente escrito se retornar 0: nenhum dado foi escrito se retornar -1: o código do erro está especificado na variável global errno lembrar que um programa inicia com 3 descritores já abertos. Outros arquivos devem ser abertos por open 49

50 Acesso a arquivos: write Exemplo: write simples Escreve uma mensagem em stdout #include <unistd.h> #include <stdio.h> int main () { if ((write(1, "Alo Mundo\n", 18))!= 18) write (2, "write error on file descriptor 1\n", 33); } exit (0); Note que se for escrito um número menor de bytes, isso não necessariamente é um erro. Um programa sério deve testar errno. Para executar o programa o diretório atual Deve estar no PATH ou o programa é Invocado especificando o diretório. $./simple_write 50

51 Acesso a arquivos: read Corresponde a syscall read baixo nível #include <unistd.h> size_t read(int fd, void *buf, size_t nbytes); Lê nbytes do arquivo com descritor fd na área de dados buf retorna o número de bytes realmente lido se retornar 0: nenhum dado foi lido ou EOF foi alcançado se retornar -1: o código do erro está especificado na variável global errno 51

52 Acesso a arquivos: read Exemplo: read simples Lê uma mensagem em stdin e escreve em stdout #include <unistd.h> #include <stdio.h> int main () { char buffer[128]; int nread; Se a entrada possuir menos do que 128 caracteres, o programa copia 128 caracteres nread = read(0, buffer, 128); if (nread == -1) write (2, "a read error has occurred\n", 26); } if ((write(1, buffer, nread))!= nread) write (2, "a write error has occurred\n", 27); 52

53 Acesso a arquivos: open Syscall open A abertura retorna um índice para uma tabela do SO (open file table) índice = fd (file descriptor) #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> Não necessários para o POSIX int open(const char *path, int oflags); int open(const char *path, int oflags, mode_t mode); nome do arquivo O_CREAT O fd é unívoco para cada processo, mas se dois processos abrirem o mesmo arquivo, cada um vai possuir seu próprio fd. No caso de escritas entre pelos dois processos, uma escrita vai sobrepor a outra. 53

54 Parâmetro oflags da open Usado para especificar ações a serem tomadas Ou bit a bit Modo de acesso e outros modos opcionais O_RDONLY READ ONLY O_WRONLY WRITE ONLY O_RDWR READ WRITE O_APPEND O_TRUNC O_CREAT O_EXCL open mode está definido em sys/stat.h 54

55 Permissões iniciais para open mode com O_CREAT S_IRUSR - read owner S_IWUSR write user S_IXUSR execute user S_IRGRP read group S_IWGRP write group S_IXGRP execute group S_IROTH read others S_IWOTH write others S_IXOTH execute others read (r) write (w) execute (x) owner group others Lembrar que esses flags são apenas um Pedido de permissão na criação do Arquivo; se a permissão será concedida Ou não depende do valor de umask (user umask variável do sistema) exemplo: open ( arquivo, O_CREAT, S_IRUSR S_IXOTH); 55

56 Acesso a arquivos: close Corresponde a syscall close #include <unistd.h> int close(int fd); Finaliza a associação entre fd e o arquivo; o fd pode ser reusado - O número de arquivos de um processo é limitado limits.h constante OPEN_MAX - em sistemas POSIX o número mínimo é 16 56

57 Acesso a arquivos: ioctl ioctl input/output control syscall #include <sys/ioctl.h.h> int ioctl(int fd, int request, void *arg); operação requerida ponteiro para alguma coisa, dependendo do arquivo e do tipo de operação 57

58 Exemplos de ioctl Ex.: Manipulação de CDROM Quase todos os comandos envolvendo controle de CDROM são usados juntamente com ioctl. Comandos e definições de acesso de drive de CD estão em /usr/include/linux/cdrom.h Manipula algumas estruturas associadas a posicionamento de CD: struct cdrom_tochdr { u_char cdth_trk0; /* start track */ u_char cdth_trk1; /* end track */ }; Função CDROMREADTOCHDR struct cdrom_ti { u_char cdti_trk0; /* start track */ u_char cdti_ind0; /* start index */ u_char cdti_trk1; /* end track */ u_char cdti_ind1; /* end index */ }; Função CDROMPLAYTRKIND 58

59 Exemplos de ioctl Ex.: Manipulação de CDROM struct cdrom_msf { u_char cdmsf_min0; /* start minute */ u_char cdmsf_sec0; /* start second */ u_char cdmsf_frame0; /* start frame */ u_char cdmsf_min1; /* end minute */ u_char cdmsf_sec1; /* end second */ u_char cdmsf_frame1; /* end frame */ }; Função CDROMPLAYMSF MSF Minute, Second and Frame format 59

60 Exemplos de ioctl Ex.: para ouvir um cd do início até o fim... #define CDDEVICE "/dev/cdrom" /*... */ struct cdrom_tochdr header; struct cdrom_ti index; int cdrom; cdrom = open(cddevice,o_rdonly O_NONBLOCK); /* Open device */ ioctl(cdrom,cdromreadtochdr,(void *) &header); /* Get start and end tracks */ index.cdti_trk0=header.cdth_trk0; /* Set first track */ index.cdti_ind0=0; /* Start of track */ index.cdti_trk1=header.cdth_trk1; /* Set final track index */ index.cdti_ind1=255; /* End of track */ ioctl(cdrom,cdromplaytrkind,(void *) &index); /* Play the tracks */ /*... */ Para pausar, retomar, parar e ejectar usar ioctl: ioctl(cdrom,cdrompause,0); /* Pause CD play. */ ioctl(cdrom,cdromresume,0); /* Resume CD play from where it was paused. */ ioctl(cdrom,cdromstop,0); /* Stop CD play (can't be RESUMEd) */ ioctl(cdrom,cdromeject,0); /* Eject CD tray. */ 60

61 Exemplos de read e write Ex. 1: cópia de arquivo #include <unistd.h> #include <sys/stat.h> #include <fcntl.h> copia um caractere de cada vez file.in é um arquivo existente file.out não existe e será criado no programa int main () { char c; int in, out; /* serão usados como descritores de arquivos */ in = open("file.in", O_RDONLY); out = open("file.out, O_WRONLY O_CREAT, S_IRUSR S_IWUSR); } while (read(in,&c,1) == 1) write (out,&c,1); 61

62 Exemplos de read e write Ex. 2: cópia de arquivo copia 1024 caracteres de cada vez #include <unistd.h> #include <sys/stat.h> #include <fcntl.h> Verifique a relação entre os tempos de execução dos dois programas de cópia ls ls file.in file.out int main () { char bloco[1024]; int in, out; /* serão usados como descritores de arquivos */ int nread; in = open("file.in", O_RDONLY); out = open("file.out, O_WRONLY O_CREAT, S_IRUSR S_IWUSR); } while ((nread = read(in, bloco, sizeof(bloco))) > 0) write (out, bloco, nread); 62

63 Outras syscalls lseek - troca a posição de um file descriptor #include <sys/types.h> #include <unistd.h> off_t lseek(int fd, off_t offset, int whence); Exemplos: Posição desejada (deslocamento):. SEEK_SET offset correspondente ao byte. SEEK_CUR offset em relação à posição corrente. SEEK_END offset em relação ao final do arquivo /* move para o byte 16 */ newpos = lseek( file_descriptor, 16, SEEK_SET ); /* move 4 bytes a frente */ newpos = lseek( file_descriptor, 4, SEEK_CUR ); /* move 8 bytes antes do fim */ newpos = lseek( file_descriptor, -8, SEEK_END ); 63

64 Outras syscalls fstat, stat, lstat obtém o status de um arquivo #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> int stat(const char *path, struct stat *buf); int lstat(const char *path, struct stat *buf); int fstat(int fd, struct stat *buf); stat indica em buf as informações do arquivo dado em path lstat - é idêntico ao stat(), exceto quando o caminho é um link simbólico, retornando informações sobre o link fstat é idêntico ao stat(), porém a referência ao arquivo é feita através de um file descriptor 64

65 stat contém informações sobre um arquivo. É retornada pelas funções stat(), fstat() e lstat(). struct stat struct stat { unsigned short st_dev; /* The device number containing the i-node */ unsigned long st_ino; /* The i-number */ unsigned short st_mode; /* The 16 bit mode */ unsigned short st_nlink; /* The link count; 0 for pipes */ unsigned short st_uid; /* The owner user-id */ unsigned short st_gid; /* The group-id */ unsigned short st_rdev; /* For a special file, the device number */ unsigned long st_size; /* The size in bytes; 0 for special files */ unsigned long st_blksize;/* best I/O block size */ unsigned long st_blocks; /* number of 512 blocks used */ unsigned long st_atime; /* The access time. */ unsigned long st_mtime; /* The modification time. */ unsigned long st_ctime; /* The status-change time. */ }; 65

66 Outras syscalls dup, dup2 - duplica um file descriptor #include <unistd.h> int dup(int oldfd); int dup2(int oldfd, int newfd); dup - cria uma cópia de um descritor de arquivo existente (oldfd) e fornece um novo descritor (newfd) tendo exatamente as mesmas características que aquele passado como argumento na chamada. Ela garante que o valor de retorno seja o menor entre todos os valores de descritores possíveis. dup2 - determina que newfd será a cópia de oldfd, fechando antes newfd se ele já estiver aberto. 66

67 Biblioteca padrão - stdio stdio.h Parte do ANSI standard C Não são syscalls Interface versátil para syscall de baixo nível Funções sofisticadas para formatação de saída e manipulação de entrada stream Equivalente ao fd syscalls pertencem ao SO Um programa inicia com os 3 streams abertos stdin, stdout, stderr Ponteiro para a estrutura (FILE *) 67

68 Funções da stdio fopen, fclose fread, fwrite fflush fseek fgetc, getc, getchar fput, putc, putchar fgets, gets printf, fprintf, sprintf scanf, fscanf, sscanf Usam buffer Cuidado, pois os dados não são escritos Diretamente no meio físico Quase todas começam com f entrada e saída formatada 68

69 fopen Usada para arquivos e terminais Serve para controlar explicitamente dispositivos #include <stdio.h> FILE *fopen(const char *filename, const char mode); Associa um stream como arquivo Modo de abertura do arquivo b indica arquivo binário (não texto) na verdade, o UNIX não faz diferença entre esses tipos e trata tudo como binário. + indica que mais de um modo será combinado na manipulação do arquivo. mode em fopen: r ou rb w ou wb a ou ab r+ ou rb+ ou r+b w+ ou wb+ ou w+b a+ ou ab+ ou a+b 69

70 mode em fopen "r" "w" "a" Abre um arquivo texto para leitura. O arquivo deve existir antes de ser aberto. Abrir um arquivo texto para gravação. Se o arquivo não existir, ele será criado. Se já existir, o conteúdo anterior será destruído. Abrir um arquivo texto para gravação. Os dados serão adicionados no fim do arquivo ("append"), se ele já existir, ou um novo arquivo será criado, no caso de arquivo não existente anteriormente. "rb" Abre um arquivo binário para leitura. Igual ao modo "r" anterior, só que o arquivo é binário. "wb" Cria um arquivo binário para escrita, como no modo "w" anterior, só que o arquivo é binário. "ab" Acrescenta dados binários no fim do arquivo, como no modo "a" anterior, só que o arquivo é binário. "r+" Abre um arquivo texto para leitura e gravação. O arquivo deve existir e pode ser modificado. "w+" "a+" Cria um arquivo texto para leitura e gravação. Se o arquivo existir, o conteúdo anterior será destruído. Se não existir, será criado. Abre um arquivo texto para gravação e leitura. Os dados serão adicionados no fim do arquivo se ele já existir, ou um novo arquivo será criado, no caso de arquivo não existente anteriormente. "r+b" Abre um arquivo binário para leitura e escrita. O mesmo que "r+" acima, só que o arquivo é binário. "w+b" Cria um arquivo binário para leitura e escrita. O mesmo que "w+" acima, só que o arquivo é binário. "a+b" Acrescenta dados ou cria uma arquivo binário para leitura e escrita. O mesmo que "a+" acima, só que o arquivo é binário 70

71 fclose Fecha o stream especificado Causa a escrita de todos os dados ainda não escritos Quando um programa acaba normalmente todos os streams abertos são fechados O programador fica sem chance de testar erros indicados Existe um limite para o número de streams abertos por um programa (FOPEN_MAX em stdio.h) #include <stdio.h> int fclose(file *stream); 71

72 fread Lê registros de dados de um stream para um buffer #include <stdio.h> size_t fread(const void *ptr, size_t size, size_t nitems, FILE *stream); ptr aponta para o buffer Registro de tamanho size Número de registros = nitems Retorna o número de registros lidos fread não é portável para máquinas diferentes 72

73 fwrite Escreve registros de dados em um stream a partir de um buffer dado por ptr #include <stdio.h> size_t fwrite(const void *ptr, size_t size, size_t nitems, FILE *stream); ptr aponta para o buffer Registro de tamanho size Número de registros = nitems Retorna o número de registros escritos com sucesso fwrite não é portável para máquinas diferentes 73

74 fflush & fseek fflush: descarga (escrita) imediata do buffer Assegura commit de operações em disco fclose realiza flush automático quando invocada #include <stdio.h> int fflush(file *stream); Fseek: estabelece a posição no stream para o próximo read ou write nesse stream Semelhante à lseek #include <stdio.h> int fseek(file *stream, long int offset, int whence); 74

75 fgetc, getc, getchar Obtém o próximo caractere do stream Retorna EOF quando alcança o fim do arquivo ou em caso de erro #include <stdio.h> int fgetc(file *stream); int getc(file *stream); int getchar(void); Em algumas versões de biblioteca pode ser implementada como macro Lê o próximo caractere de stdin, standard input 75

76 fputc, putc, putchar Escreve o caractere c no stream de saída Retorna valor escrito, EOF ou um erro #include <stdio.h> int fputc(int c, FILE *stream); int putc(int c, FILE *stream); int putchar(int c); Em algumas versões de biblioteca pode ser implementada como macro Grava o próximo caractere emstdout, standard output 76

77 fgets, gets Obtém um string do stream de entrada O string é armazenado na posição indicada por s término: Nova linha é encontrada N-1 caracteres foram transferidos Fim do arquivo foi alcançado retorno: Um ponteiro para s, ou null pointer quando alcança fim de arquivo ou encontra um erro #include <stdio.h> char *fgets(chr *s, int n, FILE *stream); char *gets(char *s); O que acontecer primeiro 77

78 Funções da stdio Entrada e saída formatada fopen, fclose fread, fwrite fflush fseek fgetc, getc, getchar fput, putc, putchar fgets, gets printf, fprintf, sprintf scanf, fscanf, sscanf entrada e saída formatada 78

79 Outro exemplo de cópia de arquivo Copiar caractere a caractere usando getc e putc #include <stdio.h> #include <stdlib> Int main () { int c; FILE *in, *out; in = fopen( file_in, r ); out = fopen ( file.out, w ); while ((c = fgetc(in))!= EOF) fputc(c, out); Experimente esse programa e determine o seu tempo de execução Compare com o tempo de execução dos demais programas de cópia já feitos 79

80 Syscalls para gerência de arquivos e diretórios read write open close ioctl trunc lseek dup dup2 chmod chown link unlink symlink mkdir rmdir chdir getwd Alteração de permissões de acesso a arquivos links Gerência de diretórios 80

81 chmod & chown: alteração de permissões chmod: troca as permissões de acesso de um arquivo ou diretório Em geral, somente o superuser ou o owner podem alterar as permisões #include <sys/stat.h> int chmod(const char *path, mode_t mode); Olhar a open!!! syscall chown: para o superuser trocar o owner de um arquivo user identification obtida com getuid syscall group identification obtida com getgid syscall #include <unistd.h> int chown(const char *path, uid_t owner, gid_t group); 81

82 Um arquivo pode ter vários nomes Conceito de link Um arquivo é representado univocamente pelo seu inode Vários nomes podem representar o mesmo inode Hard links Entradas nos diretórios que apontam para um inode Symbolic links Usado em arquivos especiais Contém apenas o pathname de um arquivo estabelecendo um link simbólico 82

83 link & symlink: cria links link syscall Cria um novo link para um arquivo existente - path1 Nova entrada do diretório é especificada - path2 #include <unistd.h> int link(const char *path1, const char *path2); symlink Cria um novo link simbólico para um arquivo existente - path1 Um link simbólico não evita que um arquivo seja removido #include <unistd.h> int symlink(const char *path1, const char *path2); 83

84 unlink: remove links unlink Remove a entrada de diretório de um arquivo syscall Decrementa o contador de links no inode do arquivo É necessária a permissão de execute para o diretório #include <unistd.h> int unlink(const char *path); Se o contador de links chegar a zero e nenhum processo abriu o arquivo, o mesmo será removido e seus blocos de dados serão devolvidos para reuso Se ambos os comandos, unlink e rm, podem deletar arquivos, então qual é a diferença entre eles? R: rm é um utilitário do sistema que chama unlink. 84

85 mkdir & rmdir mkdir Permissões semelhantes a O_CREAT em open syscall rmdir #include <sys/stat.h> int mkdir(const char *path, mode_t mode); Remove diretórios apenas se estiverem vazios #include <sys/stat.h> int rmdir(const char *path); 85

86 chdir & getcwd chdir change directory Semelhante ao comando cd syscall #include <unistd.h> int chdir(const char *path); getcwd get current working directory Determina o diretório de trabalho atual #include <unistd.h> int getcwd(char *buf, size_t size); Retorna o nome do diretório em buf Tamanho de buf 86

87 Syscalls para varrer diretórios read write open close ioctl trunc lseek dup dup2 chmod chown link unlink symlink mkdir rmdir chdir getwd opendir readdir closedir telldir seekdir Determinam os arquivos que residem em um diretório Um diretório pode ser tratado como um arquivo convencional, mas funções específicas facilitam a manipulação das entradas do diretório 87

88 opendir Varrendo diretórios Retorna um ponteiro para uma estrutura DIR DIR deve ser usado para ler as entradas do diretório syscall #include <sys/types.h> #include <dirent.h> DIR *opendir(const char *name); dirent directory entry closedir Fecha um diretório e libera os recursos associados à ele #include <sys/types.h> #include <dirent.h> int closedir(dir *dirp); 88

89 Varrendo diretórios readdir Retorna um ponteiro para uma estrutura (dirent) que representa um stream de diretório Directory entries representam arquivos #include <sys/types.h> #include <dirent.h> struct dirent *readdir(dir *dirp); syscall struct dirent { long d_ino; /* inode do arquivo */ off_t d_off; /* offset do directory entry */ unsigned short d_reclen; /* tamanho do registro */ char d_name[1]; /* nome do arquivo */ }; 89

90 telldir Varrendo diretórios Indica qual a posição corrente no stream de diretório dirp #include <sys/types.h> #include <dirent.h> long int telldir(dir *dirp); syscall seekdir Ajusta a posição corrente do stream de diretório dirp, para loc #include <sys/types.h> #include <dirent.h> void seekdir(dir *dirp, long int loc); loc posição obtida através de telldir 90

91 Exemplo: imprimindo conteúdo de diretório void printdir(char *dir, int depth) { DIR *dp; struct dirent *entry; struct stat statbuf; } if((dp = opendir(dir)) == NULL) { fprintf(stderr,"cannot open directory: %s\n", dir); return; } chdir(dir); while((entry = readdir(dp))!= NULL) { lstat(entry->d_name,&statbuf); if(s_isdir(statbuf.st_mode)) { /* Found a directory, but ignore. and.. */ if(strcmp(".",entry->d_name) == 0 strcmp("..",entry->d_name) == 0) continue; printf("%*s%s/\n",depth,"",entry->d_name); /* Recurse at a new indent level */ printdir(entry->d_name,depth+4); } else printf("%*s%s\n",depth,"",entry->d_name); } chdir(".."); closedir(dp); Parte inicial Main /* Now we move onto the main function. */ int main() { printf("directory scan of /home:\n"); printdir("/home",0); printf("done.\n"); exit(0); } 91

92 variável errno Erros O programa deve testar errno imediatamente após a chamada de uma função Os valores de errno estão definidos em errno.h Alguns valores para errno: EPERM operação não permitida ENOENT arquivo ou diretório não encontrado EIO erro de E/S EBUSY dispositivo ou recurso ocupado EINVAL argumento inválido EMFILE excesso de arquivos abertos 92

93 strerror Função para reportar erros Retorna uma string que descreve o erro #include <string.h> char *strerror(int errnum); /* strerror example : error list */ #include <stdio.h> #include <string.h> #include <errno.h> int main () { FILE * pfile; pfile = fopen ("unexist.ent","r"); if (pfile == NULL) printf ("Error opening file unexist.ent: %s\n",strerror(errno)); return 0; } Uma possível saída: Error opening file unexist.ent: No such file or directory 93

94 perror Função para reportar erros Gera uma mensagem que descreve o erro de uma função do sistema ou de biblioteca, na saída de erros padrão #include <stdio.h> void perror(const char *s); 94

95 Manipulação de arquivos Sistemas de Arquivos UNIX 95

Manipulação de Arquivos Sistema de Arquivos UNIX. Taisy Silva Weber UFRGS

Manipulação de Arquivos Sistema de Arquivos UNIX. Taisy Silva Weber UFRGS Manipulação de Arquivos Sistema de Arquivos UNIX Taisy Silva Weber UFRGS Trabalhando com arquivos conceitos básicos sobre FS revisão sistema de arquivos UNIX diretórios, arquivos e dispositivos ( syscalls

Leia mais

Sistemas de Computação Sistemas de Arquivos

Sistemas de Computação Sistemas de Arquivos Sistemas de Computação Sistemas de Arquivos 6/8/17 1 O Diretório de Trabalho #include !!!!!char *getwd(char *path) l escreve em path o nome do diretório de traballho l retorna o ponteiro para

Leia mais

Existe uma quantidade de informação que pode ser armazenada para resolver o problema.

Existe uma quantidade de informação que pode ser armazenada para resolver o problema. Arquivos Introdução As estruturas vistas anteriormente armazenam as informações na memória principal do computador. Nem sempre é conveniente. Problemas: A informação é perdida; As estruturas de dados são

Leia mais

UFRJ IM - DCC. Departamento de Ciência da Computação. Sistemas Operacionais II. 25/10/2016 Profª Valeria Menezes Bastos 1

UFRJ IM - DCC. Departamento de Ciência da Computação. Sistemas Operacionais II. 25/10/2016 Profª Valeria Menezes Bastos 1 UFRJ IM - DCC Departamento de Ciência da Computação Sistemas Operacionais II 25/10/2016 Profª Valeria Menezes Bastos 1 File System no UNIX Provê armazenamento persistente Facilidades no gerenciamento de

Leia mais

Comunicação Inter-Processo em Unix. Pipes FIFO (Named Pipes) Pipes

Comunicação Inter-Processo em Unix. Pipes FIFO (Named Pipes) Pipes Comunicação Inter-Processo em Unix Pipes FIFO (Named Pipes) 1 Pipes 2 1! Comunicação entre pai e filho Ao chamar um fork(), processos pai e filho deixam de compartilhar memória Como fazer então para que

Leia mais

Computação 2. Aula 8. Profª. Fabiany Arquivos

Computação 2. Aula 8. Profª. Fabiany Arquivos Computação 2 Aula 8 Arquivos Profª. Fabiany fabianyl@utfpr.edu.br E/S com Arquivos A linguagem C não possui nenhum comando de E/S. Todas as operações de E/S ocorrem mediante chamadas a funções de biblioteca

Leia mais

13a. Aula Manipulação de arquivos

13a. Aula Manipulação de arquivos 13a. Aula Manipulação de arquivos 2013.2 O sistema de entrada e saída do ANSI C é composto por uma série de funções (fopen, fprintf, fgets, fclose) cujos protótipos estão reunidos em stdio.h Todas estas

Leia mais

Sumário. Ficheiros. Ficheiros

Sumário. Ficheiros. Ficheiros Sumário Ficheiros Motivação Operações Ficheiros de texto e binários Manipulação de ficheiros de texto Abertura Encerramento Descritores de ficheiros: stdin, stdout, stderr Escrita Leitura Outras funções

Leia mais

Comunicação entre Processos

Comunicação entre Processos Comunicação entre Processos Pipes Redirecionamento de entrada e saída 4/19/18 1 O Pipe: Características (1) Canal de comunicação entre processos parentes, usando a politica First-In-First-Out (FIFO) Tipicamente,

Leia mais

Aula 14 Oficina de Programação Tópicos Especiais em C: Arquivos. Profa. Elaine Faria UFU

Aula 14 Oficina de Programação Tópicos Especiais em C: Arquivos. Profa. Elaine Faria UFU Aula 14 Oficina de Programação Tópicos Especiais em C: Arquivos Profa. Elaine Faria UFU - 2017 Uso da Memória Secundária Em muitos casos necessitamos da memória secundária (auxiliar), para armazenar informações

Leia mais

Algoritmos e Estruturas de Dados II IEC013

Algoritmos e Estruturas de Dados II IEC013 Algoritmos e Estruturas de Dados II IEC013 Linguagem C - Arquivos - Prof. César Melo cavmelo@dcc.ufam.edu.br Slides preparados pelo Prof. Leandro Galvão galvao@dcc.ufam.edu.br Conceitos iniciais Um arquivo

Leia mais

Aula 16: Manipulação de Arquivos em C

Aula 16: Manipulação de Arquivos em C Aula 16: Manipulação de Arquivos em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Manipulação de Arquivos Programação de Computadores IV 1 / 33

Leia mais

E/S em Arquivo. Para ler ou escrever arquivos é preciso usar ponteiros de arquivo. Um ponteiro de arquivo é uma variável ponteiro do tipo FILE:

E/S em Arquivo. Para ler ou escrever arquivos é preciso usar ponteiros de arquivo. Um ponteiro de arquivo é uma variável ponteiro do tipo FILE: E/S em Arquivo A linguagem C não contém nenhum comando de E/S. O sistema de E/S de C provê um nível de abstração entre o programador e o dispositivo utilizado. Abstração stream Dispositivo real arquivo

Leia mais

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre Programação MEAer e LEE Bertinho Andrade da Costa 2010/2011 1º Semestre Instituto Superior Técnico Manipulação de ficheiros de texto Programação 2010/2011 IST-DEEC Manipulação de Ficheiros 1 Sumário Ficheiros

Leia mais

Computação Eletrônica. Aula 12 Arquivos Texto e Binário. Prof: Luciano Barbosa. CIn.ufpe.br

Computação Eletrônica. Aula 12 Arquivos Texto e Binário. Prof: Luciano Barbosa. CIn.ufpe.br Computação Eletrônica Aula 12 Arquivos Texto e Binário Prof: Luciano Barbosa Relembrando a Arquitetura Básica de um Computador Até agora, toda a informação armazenada por nossos programas estava na memória

Leia mais

Computação 2. Aula 9. Diego Addan Arquivos

Computação 2. Aula 9. Diego Addan Arquivos Computação 2 Aula 9 Arquivos Diego Addan diegoaddan@gmail.com E/S com Arquivos A linguagem C não possui nenhum comando de E/S. Todas as operações de E/S ocorrem mediante chamadas a funções de biblioteca

Leia mais

Programação de Sistemas

Programação de Sistemas Programação de Sistemas Acesso a ficheiros panorama global Programação de Sistemas Acesso a ficheiros : 1/27 Introdução (1) [Definição]: No Linux, um ficheiro é uma sequência de Bytes. Os ficheiros são

Leia mais

Programação para Computação 13ª Aula

Programação para Computação 13ª Aula Programação para Computação 13ª Aula Arquivos em C O sistema de E/S da linguagem C utiliza o conceito de streams e arquivos, como um nível de abstração entre o programador e o dispositivo utilizado. Uma

Leia mais

Sistemas de Operação (2018/2019) Ficha 4

Sistemas de Operação (2018/2019) Ficha 4 Sistemas de Operação (2018/2019) Ficha 4 Q1. Considere a seguinte implementação de um comando mycat (semelhante ao cat da shell Bash) utilizando directamente a API do Unix (system calls) em vez da Biblioteca

Leia mais

Laboratório de Introdução à Ciência da Computação I

Laboratório de Introdução à Ciência da Computação I Laboratório de Introdução à Ciência da Computação I Aula 13 Arquivos Professores: Jó Ueyama 10/06/10 1 Stream de texto Arquivo: tipo texto Um arquivo texto é uma sequência de linhas, onde cada linha contém

Leia mais

Fundamentos de Arquivos

Fundamentos de Arquivos Fundamentos de Arquivos Leandro C. Cintra M.C.F. de Oliveira Rosane Minghim 2004-2010 Fonte: Folk & Zoelick, File Structures 2 Arquivos Informação mantida em memória secundária HD Fitas magnéticas CD DVD

Leia mais

Departamento de Sistemas de Computação Universidade de São Paulo Introdução a Ciência de Computação I. Aula 13 Arquivos

Departamento de Sistemas de Computação Universidade de São Paulo Introdução a Ciência de Computação I. Aula 13 Arquivos Departamento de Sistemas de Computação Universidade de São Paulo Introdução a Ciência de Computação I Aula 13 Arquivos Responsável Seiji Isotani, Rafaela V. Rocha sisotani@icmc.usp.br rafaela.vilela@gmail.com

Leia mais

Aula: ARQUIVOS. Introdução à Ciência da Computação I Simone Senger Souza. ICMC/USP São Carlos

Aula: ARQUIVOS. Introdução à Ciência da Computação I Simone Senger Souza. ICMC/USP São Carlos Aula: ARQUIVOS Introdução à Ciência da Computação I Simone Senger Souza ICMC/USP São Carlos Introdução As estruturas vistas anteriormente armazenam as informações na memória principal do computador. Nem

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE Algoritmos ANSI C - Arquivos Copyright 2014 IFRN Agenda Conceito Tipos de arquivos Texto Binário Stream Principais funções Exemplos

Leia mais

Sistema de Arquivos no Unix

Sistema de Arquivos no Unix Sistema de Arquivos no Unix Introdução (1) Estruturados na forma de uma árvore única, iniciando pelo diretório "/", que é chamado de "raiz". Há suporte para arquivos, diretórios e links (atalhos). Os arquivos

Leia mais

LINGUAGEM C: ARQUIVOS

LINGUAGEM C: ARQUIVOS LINGUAGEM C: ARQUIVOS Prof. André Backes ARQUIVOS Por que usar arquivos? Permitem armazenar grande quantidade de informação; Persistência dos dados (disco); Acesso aos dados poder ser não seqüencial; Acesso

Leia mais

Sistemas de arquivos. Sistemas Operacionais II. UnixFS, Linux VFS e Ext2/3/4. Anderson L. S. Moreira

Sistemas de arquivos. Sistemas Operacionais II. UnixFS, Linux VFS e Ext2/3/4. Anderson L. S. Moreira Sistemas Operacionais II Sistemas de arquivos UnixFS, Linux VFS e Ext2/3/4 Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br Copyright 2004 2009, Free Electrons. Creative Commons BY SA 3.0 license

Leia mais

Introdução a Programação. Manipulando Arquivos em Modo Texto

Introdução a Programação. Manipulando Arquivos em Modo Texto Introdução a Programação Manipulando Arquivos em Modo Texto Tópicos da Aula Hoje aprenderemos funções de manipulação de arquivos texto Funções de leitura em modo texto Funções de escrita em modo texto

Leia mais

C Arquivos. Adriano Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ

C Arquivos. Adriano Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ C Arquivos Adriano Cruz 21 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ 1 Resumo da Seção Introdução Fluxos de Dados Arquivos Funções de Entrada e Saída Abrindo um

Leia mais

Outline. 33. Manipulação de arquivos DIM

Outline. 33. Manipulação de arquivos DIM Outline 33. Manipulação de arquivos DIM031 015.1 Leitura e escrita 3 s DIM031 33. Manipulação de arquivos 015.1 1 / 4 DIM031 33. Manipulação de arquivos 015.1 / 4 Arquivo = entidade de armazenamento de

Leia mais

LINGUAGEM C: ARQUIVOS

LINGUAGEM C: ARQUIVOS LINGUAGEM C: ARQUIVOS Prof. André Backes Arquivos 2 Por que usar arquivos? Permitem armazenar grande quantidade de informação; Persistência dos dados (disco); Acesso aos dados poder ser não seqüencial;

Leia mais

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental USP - ICMC - SSC SSC 0301-2o. Semestre 2013 Disciplina de Introdução à Computação para Engenharia Ambiental 1 Prof. Dr. Fernando Santos Osório / Prof. Artur Lovato Cunha LRM - Laboratório de Robótica Móvel

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Manipulação de arquivos

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Manipulação de arquivos Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: Manipulação de arquivos Prof. Renato Pimentel 1 Introdução Até o momento, trabalhamos com programas que utilizam apenas a memória

Leia mais

Comunicação entre Processos Named Pipes (FIFO)

Comunicação entre Processos Named Pipes (FIFO) Comunicação entre Processos Named Pipes (FIFO) 5/17/18 1 Named pipe (FIFO) FIFO permite que dois processos quaisquer se comuniquem É um tipo especial de arquivo visível no sistema de arquivos Na troca

Leia mais

Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria USP - ICMC - SSC SSC 0501-1o. Semestre 2015 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria Prof. Fernando Santos Osório Email: fosorio [at] icmc. usp. br, gmail. com Página Pessoal: http://www.icmc.usp.br/~fosorio/

Leia mais

Aula 26 - Arquivos. Prof. Laura Silva de Assis. Engenharia da Computação. CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca

Aula 26 - Arquivos. Prof. Laura Silva de Assis. Engenharia da Computação. CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca Programação I Aula 26 - Prof. Laura Silva de Assis Engenharia da Computação 2 o Período CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca UnED Petrópolis 2 o semestre - 2015 1 Sumário

Leia mais

1/24 FICHEIROS DE TEXTO

1/24 FICHEIROS DE TEXTO 1/24 FICHEIROS DE TEXTO Hardware de entrada/saída 2/24 Hardware de entrada/saída Grande variedade de dispositivos de E/S (Input/Output) - de memória: disco interno e externo, DVD, pen, CD,... - de transmissão:

Leia mais

Manipulação de Arquivos

Manipulação de Arquivos Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná Manipulação de Arquivos Linguagem de Programação Estruturado Sumário Introdução; E/S ANSI Versus E/S UNIX; E/S em C Versus E/S

Leia mais

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Computadores Digitais 2. Prof. Rodrigo de Souza Couto Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Aula de Hoje Arquivos Funções para abrir e fechar arquivos Arquivos em modo texto Arquivos em modo binário ATENÇÃO

Leia mais

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria USP - ICMC - SSC SSC 0501-1o. Semestre 2011 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria Prof. Fernando Santos Osório Email: fosorio [at] icmc. usp. br, gmail. com Página Pessoal: http://www.icmc.usp.br/~fosorio/

Leia mais

Sistemas de Arquivos

Sistemas de Arquivos Sistemas de Arquivos Problemas da alocação em RAM Baixa capacidade Volatilidade Solução: uso de arquivos Conceito de arquivo Espaço endereços lógico contíguo Coleção informações correlatas com mesmo nome

Leia mais

TÉCNICAS DE PROGRAMAÇÃO

TÉCNICAS DE PROGRAMAÇÃO TÉCNICAS DE PROGRAMAÇÃO Arquivo Conceitos Arquivo Fluxo de bytes stream Linguagem C Estrutura do tipo FILE FILE contém informações do arquivo Tamanho Ponteiro para buffer dados Atual operação sobre o arquivo

Leia mais

Leitura de Arquivos. Prof. Fabrício Olivetti de França

Leitura de Arquivos. Prof. Fabrício Olivetti de França Leitura de Arquivos Prof. Fabrício Olivetti de França Leitura de Arquivos Na linguagem C temos um tipo especial chamado FILE para trabalhar com arquivos. Abrindo e fechando um arquivo Para abrir um arquivo

Leia mais

I/O de baixo-nível em ficheiros

I/O de baixo-nível em ficheiros 7 I/O de baixo-nível em ficheiros Sumário: Introdução Funções de entrada/saída de baixo-nível Referência bibliográfica: W. Stevens. Advanced Programming in the UNIX Environment. Addison-Wesley, 1992 (cap.3,

Leia mais

Programação de Computadores II

Programação de Computadores II Programação de Computadores II Slides cedidos por Karina Mochetti 2018.1 Arquivos Arquivos 'a' ' ' '4' '2' ' ' 'C' 'A' K' 'E' 'a' 42 "CAKE" 0x6120 0x3432 0x2043 0x414B 0x45 Arquivos de Texto vs Arquivos

Leia mais

Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ]

Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ] USP - ICMC - SSC SSC 0300-2o. Semestre 2013 Disciplina de [ Eng. Elétrica / Automação ] Prof. Dr. Fernando Santos Osório / PAE: Rafael Klaser (LRM / ICMC) LRM - Laboratório de Robótica Móvel do ICMC /

Leia mais

USP - ICMC - SSC SSC o. Semestre Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ]

USP - ICMC - SSC SSC o. Semestre Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ] USP - ICMC - SSC SSC 0300-2o. Semestre 2013 Disciplina de [ Eng. Elétrica / Automação ] Prof. Dr. Fernando Santos Osório / PAE: Rafael Klaser (LRM / ICMC) LRM - Laboratório de Robótica Móvel do ICMC /

Leia mais

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos:

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos: CAP. IX - MANIPULAÇÃO DE ARQUIVOS 9.1 Generalidades sobre arquivos 9.2 Abertura e fechamento de arquivos 9.3 Arquivos textos e arquivos binários 9.4 Leitura e escrita em arquivos binários 9.5 Procura direta

Leia mais

SSC304 Introdução à Programação Para Engenharias. Arquivos. GE4 Bio

SSC304 Introdução à Programação Para Engenharias. Arquivos. GE4 Bio Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação Introdução à Para Engenharias Arquivos GE4 Bio GE4Bio Grupo de Estudos em Sinais Biológicos

Leia mais

Sistemas de Arquivos. (Aula 23)

Sistemas de Arquivos. (Aula 23) Sistemas de Arquivos (Aula 23) Funções de um SO Gerência de processos Gerência de memória Gerência de Arquivos Gerência de I/O Sistema de Proteção 2 Sistemas Operacionais 2008/1 Necessidade de Armazenamento

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação CP41F Operações de abertura, leitura e finalização de arquivos. Aula 32 Prof. Daniel Cavalcanti Jeronymo Universidade Tecnológica Federal do Paraná (UTFPR) Engenharia de Computação

Leia mais

Métodos Computacionais. Arquivos

Métodos Computacionais. Arquivos Métodos Computacionais Arquivos Arquivos Um arquivo representa um elemento de informação armazenado em memória secundária (disco) Características: Informações são persistidas Atribui-se nomes aos elementos

Leia mais

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Arquivos em C

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Arquivos em C Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Arquivos em C 1 Material preparado pela profa Silvana Maria Affonso de Lara 2º semestre de 2010 ROTEIRO DA AULA Arquivos

Leia mais

Programação II. Arquivos - Conceito. Arquivos

Programação II. Arquivos - Conceito. Arquivos Programação II Arquivos Jocélio Passos joceliodpassos@bol.com.br C Comp Total, Cap 9 Espaço para armazenar dados em memória auxiliar (não volátil) Arquivos em C podem ser também terminais ou impressoras

Leia mais

Arquivos em C. Material da Prof. Ana Eliza

Arquivos em C. Material da Prof. Ana Eliza em C Material da Prof. Ana Eliza Definição Um arquivo é uma estrutura de dados linear ( lista ) que é mantida fora da memória principal, em um dispositivo de armazenamento (memória secundária). Um arquivo

Leia mais

Listas (cont.) K&R: Capitulo 6. Lista Simplesmente Ligada IAED, 2012/2013. Conjunto de nós. Cada nó contém. head NULL. typedef struct node {

Listas (cont.) K&R: Capitulo 6. Lista Simplesmente Ligada IAED, 2012/2013. Conjunto de nós. Cada nó contém. head NULL. typedef struct node { Listas (cont.) K&R: Capitulo 6 Lista Simplesmente Ligada Conjunto de nós head NULL Cada nó contém Informação útil Ponteiro para o próimo nó typedef struct node Item item; struct node *net; *link; Item

Leia mais

Arquivos em C Parte 2

Arquivos em C Parte 2 Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Arquivos em C Parte 2 Profa Rosana Braga Material preparado pela profa Silvana Maria Affonso de Lara 1º semestre de

Leia mais

Manipulação de Ficheiros

Manipulação de Ficheiros Manipulação de Ficheiros Utilização de ficheiros Programas normalmente necessitam de ler e/ou escrever em ficheiros de dados Tipicamente um ficheiro representa uma sequência qualquer de bytes Redirecionamento

Leia mais

2. Consola, ficheiros e directórios

2. Consola, ficheiros e directórios 2. Consola, ficheiros e directórios 2.1. Entrada/Saída na consola A consola (teclado + écran) é vista geralmente nos S.O. s como um ou mais ficheiros onde se pode ler ou escrever texto. Esses ficheiros

Leia mais

Comunicação entre Processos Memória Compartilhada

Comunicação entre Processos Memória Compartilhada Comunicação entre Processos Memória Compartilhada 3/23/17 1 Métodos de comunicação entre processos Memória compartilhada Sinais Pipes Troca de mensagens Memória Compartilhada Memória compartilhada Permite

Leia mais

Sistema de Arquivos no Unix

Sistema de Arquivos no Unix Sistema de Arquivos no Unix Introdução (1) Estruturados na forma de uma árvore única, iniciando pelo diretório "/", que é chamado de "raiz". Há suporte para arquivos, diretórios e links (atalhos). Os arquivos

Leia mais

Sistema de Entrada/Saída

Sistema de Entrada/Saída Conteúdo Ficheiros (jpo@di.uminho.pt) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho Sistemas Operativos 2006-2007 2 Descritores de ficheiros Descritores

Leia mais

Linguagem C Ficheiros Compilação Separada

Linguagem C Ficheiros Compilação Separada Linguagem C Ficheiros Compilação Separada typedef definição de tipos Apontadores para estruturas Ficheiros na bibiloteca standard do C Compilação Separada Definição de novos tipos em C É possível definir

Leia mais

Sistemas de Arquivos. Diretórios Gerenciamento de Espaço em Disco

Sistemas de Arquivos. Diretórios Gerenciamento de Espaço em Disco Sistemas de Arquivos Diretórios Gerenciamento de Espaço em Disco Implementação de Diretórios (1) Contém informações que permitem acessar os arquivos As entradas do diretório fornecem informações para encontrar

Leia mais

Mestrado em Engenharia Física Tecnológica

Mestrado em Engenharia Física Tecnológica 5 a Aula - Ciclo for. Leitura e Escrita em Ficheiros. Programação Mestrado em Engenharia Física Tecnológica Samuel M. Eleutério sme@tecnico.ulisboa.pt Departamento de Física Instituto Superior Técnico

Leia mais

Estruturas de Dados. Módulo 15 - Arquivos. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 15 - Arquivos. 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 15 - Arquivos 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)

Leia mais

Inter-process Communication (IPC)

Inter-process Communication (IPC) Inter-process Communication (IPC) Comunicação entre processos (2) Filas (FIFOs, Named Pipes) Fila (FIFO, Named Pipe) Trata-se de uma extensão do conceito de pipe. Pipes só podem ser usados por processos

Leia mais

Sistema de Arquivos. Introdução

Sistema de Arquivos. Introdução Sistema de Arquivos Prof. Alexandre Beletti 1 Introdução Como organizar as informações? Arquivos! E como classificar os arquivos? Extensões! 2 1 Extensões de Arquivos 3 Estruturas de Arquivos Sequência

Leia mais

Prof. Neucimar J. Leite. 3 de março de 2007

Prof. Neucimar J. Leite. 3 de março de 2007 Funções para manipulação de arquivos Prof. Neucimar J. Leite 3 de março de 2007 Este resumo contém exemplos e comentários sobre algumas das principais funções da linguagem C para manipulação de arquivos

Leia mais

Sistemas Operacionais. Laboratório 1 (Ambiente de Aprendizado)

Sistemas Operacionais. Laboratório 1 (Ambiente de Aprendizado) Sistemas Operacionais Laboratório 1 () Roteiro Linux em modo texto Acesso Interpretador de comandos Comandos Básicos Tratamento de Arquivos e Diretórios (Pasta*) Permissões Processos Editor de Texto Criação

Leia mais

9. Arquivos em C. Prof. Renato Tinós. Departamento de Computação e Matemática (FFCLRP/USP) Introdução à Computação II

9. Arquivos em C. Prof. Renato Tinós. Departamento de Computação e Matemática (FFCLRP/USP) Introdução à Computação II Introdução à Computação II 5952011 9. Arquivos em C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 9. Arquivos em C 9.1. Introdução 9.2. Escrita 9.3. Leitura

Leia mais

Aula de Arquivos. Jesimar da Silva Arantes. Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos, SP

Aula de Arquivos. Jesimar da Silva Arantes. Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos, SP Aula de Arquivos Jesimar da Silva Arantes Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos, SP Estagiário PAE: Jesimar da Silva Arantes Professor: Claudio Fabiano

Leia mais

Sistemas Operacionais

Sistemas Operacionais Introdução Inst tituto de Info ormátic ca - UF FRGS Sistemas Operacionais i Sistema de Arquivos Introdução Aula 16 Armazenamento permanente de grande volume de informações Memória primária (RAM) é volátil

Leia mais

Mestrado em Engenharia Física Tecnológica

Mestrado em Engenharia Física Tecnológica 20 a Aula - Biblioteca Standard (II) Programação Mestrado em Engenharia Física Tecnológica Samuel M. Eleutério sme@tecnico.ulisboa.pt Departamento de Física Instituto Superior Técnico Universidade de Lisboa

Leia mais

Arquivos. Fundamentos de Arquivos. Discos X Memória Principal. Memória Secundária x Principal. Informação mantida em memória secundária (externa)

Arquivos. Fundamentos de Arquivos. Discos X Memória Principal. Memória Secundária x Principal. Informação mantida em memória secundária (externa) Algoritmos e Estruturas de Dados II Prof. Ricardo J. G. B. Campello Fundamentos de Arquivos Adaptado dos Originais de: Leandro C. Cintra Maria Cristina F. de Oliveira Arquivos Informação mantida em memória

Leia mais

Aula 26: Arquivos de texto

Aula 26: Arquivos de texto Aula 26: Arquivos de texto Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aulas anteriores Estruturas heterogêneas Alocação

Leia mais

Mestrado em Engenharia Física Tecnológica

Mestrado em Engenharia Física Tecnológica 19 a Aula - Biblioteca Standard (I) Programação Mestrado em Engenharia Física Tecnológica Samuel M. Eleutério sme@tecnico.ulisboa.pt Departamento de Física Instituto Superior Técnico Universidade de Lisboa

Leia mais

Sistemas Operacionais

Sistemas Operacionais Arquitetura do sistema de arquivos em camadas Inst tituto de Info ormátic ca - UF FRGS Sistemas Operacionais i Sistema de Arquivos Introdução Aula 17 Estrutura de diretórios Alocação e gerenciamento de

Leia mais

Linguagem C. Armazenamento de Dados em Arquivos - Continuação

Linguagem C. Armazenamento de Dados em Arquivos - Continuação Linguagem C Armazenamento de Dados em Arquivos - Continuação Arquivos Binários Comandos para gravação e leitura de arquivos (revisão): FILE *arquivo; arquivo = fopen( nome, modo ); fwrite (&variavel, sizeof

Leia mais

Leandro C. Cintra M.C.F. de Oliveira Rosane Minghim PAE 2012: Rafael Martins. Fonte: Folk& Zoelick, File Structure

Leandro C. Cintra M.C.F. de Oliveira Rosane Minghim PAE 2012: Rafael Martins. Fonte: Folk& Zoelick, File Structure Fundamentos de Arquivos Leandro C. Cintra M.C.F. de Oliveira Rosane Minghim 2004-2012 PAE 2012: Rafael Martins Fonte: Folk& Zoelick, File Structure 2 Arquivos Informação mantida em memória secundária HD

Leia mais

Operações em Arquivos. MC102 Felipe Bergo

Operações em Arquivos. MC102 Felipe Bergo Operações em Arquivos MC102 Felipe Bergo Arquivos O sistema de arquivos é uma abstração para as memórias secundárias do computador: discos, fitas, CDs. Há uma hierarquia de diretórios e cada diretório

Leia mais

Elementos de entrada e saída com arquivos

Elementos de entrada e saída com arquivos Elementos de entrada e saída com arquivos David Deharbe 1 1 Conceitos Por enquanto vimos como realizar entradas (leitura): do teclado e saídas (impressão): na tela. Em geral, pode-se usar rotinas muito

Leia mais

Programação de Computadores

Programação de Computadores Programação de Computadores Arquivos Prof. Fabio Henrique N. Abe fabio.henrique.abe@gmail.com 99642-5002 http://www.comp.uems.br/~fhna/ Exercícios 1 de Agora valendo 2,0 dos trabalhos para a P4! Entrega

Leia mais

Programação de Sistemas. Tubos

Programação de Sistemas. Tubos Programação de Sistemas Tubos Programação de Sistemas Pipes : 1/18 Tubos - introdução APUE 15.2 No Unix, os tubos ( pipes ) constituem o mecanismo original de comunicação entre processos. Mensagens limitadas

Leia mais

Implementação de Sistemas de Arquivos. Na Aula Anterior... Esquema do Sistema de Arquivos. Nesta Aula 31/10/2016. Estrutura de Baixo Nível de um Disco

Implementação de Sistemas de Arquivos. Na Aula Anterior... Esquema do Sistema de Arquivos. Nesta Aula 31/10/2016. Estrutura de Baixo Nível de um Disco GSI018 Sistemas Operacionais 31/10/2016 Implementação de Sistemas de Arquivos Universidade Federal de Uberlândia Faculdade de Computação Prof. Dr. rer. nat. Daniel D. Abdala Na Aula Anterior... Memória

Leia mais

3.1 - Funções para manipular dados de entrada e saída padrão

3.1 - Funções para manipular dados de entrada e saída padrão 1616161616161616161616161616161616161616161616161616 3- ENTRADA E SAÍDA EM C Os principais meios para executar operações de entrada e saída (E/S) são: Entrada e saída pelo console (ou padrão): teclado

Leia mais

1 Escrita de Arquivos Binário

1 Escrita de Arquivos Binário Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Aula prática sobre arquivos binários 1 Escrita de Arquivos Binário Esta aula será sobre escrita e leitura de arquivos binários. Nesta

Leia mais

Programação de Sistemas

Programação de Sistemas Programação de Sistemas FIFOs Programação de Sistemas FIFOs : 1/13 Introdução APUE 15.5 Os tubos só podem ser usados por processos que tenham um antecessor comum. Para resolver a limitação dos tubos, o

Leia mais

Sequência de informações binárias armazenadas num dispositivo de armazenamento permanente. Em geral os bits são agrupados em grupos de 8 (1 byte)

Sequência de informações binárias armazenadas num dispositivo de armazenamento permanente. Em geral os bits são agrupados em grupos de 8 (1 byte) Arquivos Apesar da organização física sequencial dos bytes no arquivo, podemos em cima desta organização básica implementar outros tipos de estruturação para uma arquivo Arquivo Sequência de informações

Leia mais

MC-102 Aula 24 Arquivos em C e Parâmetros do Programa

MC-102 Aula 24 Arquivos em C e Parâmetros do Programa MC-102 Aula 24 Arquivos em C e Parâmetros do Programa Instituto de Computação Unicamp 3 de Novembro de 2016 Roteiro 1 Arquivos Introdução a Arquivos em C Nomes e Extensões Tipos de Arquivos Caminhos Absolutos

Leia mais

Depuração e Teste de programas C C Depuração e teste de programas C

Depuração e Teste de programas C C Depuração e teste de programas C Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Depuração e Teste de programas C C Depuração e teste de programas C Profa Rosana Braga (adaptado de material do prof.

Leia mais

Gerência do Sistema de Arquivos. Adão de Melo Neto

Gerência do Sistema de Arquivos. Adão de Melo Neto Gerência do Sistema de Arquivos Adão de Melo Neto 1 Gerência do Sistema de Arquivos Organização dos arquivos Estrutura de diretório Gerência de espaço livre Gerência de alocação de arquivos em disco Proteção

Leia mais

Comunicação entre Processos Memória Compartilhada

Comunicação entre Processos Memória Compartilhada Comunicação entre Processos Memória Compartilhada 8/30/18 1 Métodos de comunicação entre processos Memória compartilhada Sinais Pipes Troca de mensagens Memória Compartilhada Memória compartilhada Permite

Leia mais

Capítulo 11 Sistemas de Arquivos

Capítulo 11 Sistemas de Arquivos Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Capítulo Sistemas de s Introdução O armazenamento e a recuperação de informações

Leia mais

Linguagem de Programação C. Arquivos Binários

Linguagem de Programação C. Arquivos Binários Arquivos Binários Cristiano Lehrer Motivação Variáveis int e float tem tamanho fixo em memória: int 2 bytes. float 4 bytes. A representação em texto dos números precisa de uma quantidade variável de caracteres:

Leia mais

Faculdade de Computação

Faculdade de Computação Faculdade de Computação Programação Procedimental 13 Laboratório de Programação - Algoritmos Prof. Cláudio C. Rodrigues Prof. Fabíola Gonçalves I. Introdução a Arquivos A motivação para utilizar arquivos

Leia mais

9/24/2014. Prof. André Backes

9/24/2014. Prof. André Backes Prof. André Backes 1 Arquivos Por que usar arquivos? Permitem armazenar grande quantidade de informação; Persistência dos dados (disco); Acesso aos dados poder ser não sequencial; Acesso concorrente aos

Leia mais

Fundamentos de Programação 1

Fundamentos de Programação 1 Fundamentos de Programação 1 Linguagem C Arquivos Seqüências ou de Texto. Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO 1 Arquivo de Escrita 1 fopen ( nome.txt", "w" ); fputc ( caracter, arquivo); 2 #include

Leia mais