Leandro Soares de Sousa (DSc.) Página: Aula 03 Revisão e Conceitos C e Unix

Documentos relacionados
Leandro Soares de Sousa (DSc.) Página: Parte I

Leandro Soares de Sousa (DSc.) Página: Aula 02 Revisão e Conceitos C

Tipos de Dados Definidos Pelo Usuário. Estruturas Uniões Enumerações O Comando sizeof O Comando typedef

Leandro Soares de Sousa (DSc.) Página: Aula 04 - desenvolvimento multithread

Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas

Básico: estrutura de programa, sintaxe Interface com linha de comando

ALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal


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

SSC300- Linguagens de Programação e Aplicações Profa Vânia de Oliveira Neves. ICMC/USP São Carlos

Manipulação de processos

Leandro Soares de Sousa (DSc.) Página: Parte II

Programação de Computadores II

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas

Fundamentos de Programação 1

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 {

Programação Estruturada I

4 MDP. void média e dp(int a[],int n,float em,float ed) 7. Variáveis auxiliares 7. Faça ed igual ao desvio padrão 6 }

MESMO QUE ESTAS VARIÁVEIS TENHAM NOME IDÊNTICOS

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

#include <stdio.h> void Swap (int *a,int *b) { int temp; temp=*a; *a=*b; *b=temp; } main () {

Linguagem e Técnicas de Programação

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out).

Introdução à Lógica de Programação

Introdução à Programação Aula 07. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Sub-rotinas em C. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto

Memória compartilhada

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

Linguagem C Ficheiros Compilação Separada

Comunicação entre Processos

Algoritmos e Programação

Algoritmos e Estruturas de Dados I 01/2013. Passagem de Parâmetros e Estruturas. Pedro O.S. Vaz de Melo

TE091 Programação Orientada a Objetos Engenharia Elétrica

Programação de Sistemas

prim = A ; prim = &A[0];

Listas ligadas/listas encadeadas

Arquivos. Prof. Dr. Silvio do Lago Pereira. Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

Aula 2: Introdução a Linguagem C

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

SSC INTRODUÇÃO À COMPUTAÇÃO PARA ENGENHARIA AMBIENTAL REGISTROS E ARQUIVOS. Profa. Dra. Milena Guessi Margarido

Leandro Soares de Sousa (DSc.) Página: Aula 05 - desenvolvimento com sockets

Introdução a Programação. Tipos Estruturados de Dados

ARQUIVOS DE DADOS EM C: UMA INTRODUÇÃO

Aula 26: Arquivos de texto

FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara

Tratamento de Sinais

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Indexação e Busca. O objetivo deste trabalho é projetar e implementar um sistema de programas para indexação e busca em arquivos de texto.

Ponteiros e Tabelas. K&R: Capítulo 5

Linguagem C Princípios Básicos (parte 1)

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Profa Rosana Braga

Faculdade de Computação

Técnicas Avançadas de Programação

Algoritmos e Estruturas de Dados I (DCC/003) Funções

Curso de Programação C em Ambientes Linux Aula 05

Material sobre Funções AEDS 1

Programação de Sistemas Carris

Programação 5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação. Cap. 7 Arrays. Arrays

EPs 1 e 2. EP2: veja. EP1: veja

Computação 2. Aula 5. Profª. Fabiany defines vetor, strings e matriz por parâmetros de função

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

Outline. 33. Manipulação de arquivos DIM

Criação de Processos Fork( ) Exec( )

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

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

struct <identificador> { tipo <nome_variável>; tipo <nome_variável>; : } <variáveis_estrutura>;

Programação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02

Aula 28: Arquivos de texto

Programação de Computadores II. Cap. 4 Funções

Programação Estruturada

Programação de Computadores II

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

Computação 2. Aula 5. Diego Addan Estrutura de Dados Registros (structs)

Computação 2. Aula 7. Profª. Fabiany Ponteiros

Leandro Soares de Sousa (DSc.) Página: Parte III

EXERCÍCIO DE SONDAGEM TURMA 02 SEMESTRE DATA: 01/11/2016. Matrícula Nome Nota

Verificando corretude da triangulação

Processos em Unix. Conteúdo: Definição de Processos em Unix Estrutura, tipo e escalonamento de processos em Unix Processos, Pai, Filho e Zumbi.

Laboratório 3 Comandos de repetição while, do-while e for

ESTRUTURAS CONDICIONAIS. Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza

Introdução à Programação

Processos. (c) 2005 Volnys B. Bernal Versão de 15/3/2006. Agenda. Processos. Introdução aos Processos. Introdução aos Processos

ponteiros INF Programação I Prof. Roberto Azevedo

Funções em C. Lucas Ferrari de Oliveira Professor Adjunto. Linguagem de Programação Estruturada I. Universidade Federal do Paraná

1ª versão. #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxdiscos 1000

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

AED 2002/2003 p.1/19. Tipos Abstractos. Necessidade de tipos de dados abstractos Objectos Pilhas FIFOs e filas

Computação I - C Prova /10/ Profs. Adriano Cruz e Valeria Bastos

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

1 System Calls no Linux

Alguns conceitos de C++ que usaremos neste curso (para quem já conhece C) Suponha que se queira criar uma função que soma 1 numa variável inteira.

Pausa para nossos comerciais

Linguagem de Programação C

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

Algoritmos e Estruturas de Dados I. Funções. Pedro Olmo Stancioli Vaz de Melo

Um processo sob UNIX ocupa uma área de memória formada basicamente por 3 partes:

INF 1620 P3-02/07/02 Questão 1 Nome:

Transcrição:

Tópicos Especiais Leandro Soares de Sousa (DSc.) e-mail: lsousa@id.uff.br Página: http://www.ic.uff.br/~lsousa Aula 03 Revisão e Conceitos C e Unix

Ferramentas para ajudá-los! 2 Programas com vários fontes em C! #include <meu.h> // definições // declaração de funções // estruturas de dados // variáveis // funções

Vários fontes em C 3 Mais de um.c e.h em seus projetos! Inclusões pré-definidas no C Inclusões de seus próprios fontes #include <meu.h> // definições // declaração de funções // estruturas de dados // variáveis // funções Em um fonte podemos desenvolver uma biblioteca para ser usada em nossos sistemas, sem uma função main()!

Vários fontes em C 4 Mais de um.c e.h em seus projetos! #define DIG "0123456789" #define UPPER_LIMIT 90 #define LOWER_LIMIT 10 #define CMD_APACHE_CONF_NAME #define CMD_APACHE_START #define CMD_APACHE_STOP "httpd.conf" "start" "stop" #define CMD_GET_HOSTNAME "hostname > /root/name.txt" #define TOKEN_PROCESSOR_AGENT #define TOKEN_SEGMENT_AGENT #define TOKEN_REQUEST_AGENT "-PR" "-SG" "-RQ" #include <meu.h> // definições // declaração de funções // estruturas de dados // variáveis // funções

Vários fontes em C 5 Mais de um.c e.h em seus projetos! extern void m_usleep(long pausa); extern int soma(int a,int b); #include <meu.h> // definições // declaração de funções // estruturas de dados // variáveis globais // funções No include de uma biblioteca serve para indicar que essa função existe e na link-edição será incluída por algum fonte.

Vários fontes em C 6 Mais de um.c e.h em seus projetos! typedef antigo_nome novo_nome; Como exemplo vamos dar o nome de inteiro para o tipo int: typedef int inteiro; typedef struct tipo_endereco { char rua [50]; int numero; char bairro [20]; char cidade [30]; char sigla_estado [3]; long int CEP; } TEndereco; typedef struct ficha_pessoal { char nome [50]; long int telefone; TEndereco endereco; } TFicha; void main(void) { TFicha *ex;... } #include <meu.h> // definições // declaração de funções // estruturas de dados // variáveis globais // funções

Vários fontes em C 7 Mais de um.c e.h em seus projetos! int G_v1, G_v2; void m_usleep(long pausa) { } int soma(int a,int b) { } #include <meu.h> // definições // declaração de funções // estruturas de dados // variáveis globais // funções

Vários fontes em C 8 Mais de um.c e.h em seus projetos! Compilação de múltiplos fontes! #include <meu.h> // definições // declaração de funções // estruturas de dados // variáveis globais // funções cc -c bl_01.c -I. -o bl_01.o 2>bl_01.txt cc -c bl_02.c -I. -o bl_02.o 2>bl_02.txt cc -c main.c -I. -o main.o 2>main.txt cc -o../bin/prog *.o -lpthread 2>prog.txt

Ferramentas para ajudá-los no mestrado! 9 Coisas do sistema Operacional: UNIX LINUX! #include <meu.h> // definições // declaração de funções // estruturas de dados // variáveis // funções

Coisas do sistema operacional (UNIX/LINUX) 10 Vamos explorar algumas interações com o Sistema Operacional. getpid() retorna o process ID do processo que chama a função PPID / KILL -<sinal> PID / KILL -<sinal> -PID

Coisas do sistema operacional (UNIX/LINUX) 11 COMANDO & nohup COMANDO & (vamos testar!) COMANDO ; COMANDO stddin / sdtout / stderr /dev/null / 1 / 2 / > / >> / < PIPE: comado comando sleep(segundos) usleep(micro segundos) para mili x 1000 Instrução C: system( COMANDO );

Coisas do sistema operacional (UNIX/LINUX) 12 Usando o que aprendemos! Um programa que controla a execução de outro! para.c: recebe como parâmetro um inteiro, salva seu pid e parâmetro, espera por seu conteúdo em segundos e sai. controla.c: dispara uma série de para.c, lê o conteúdo do arquivo gerado por eles e verifica a execução.

Coisas do sistema operacional (UNIX/LINUX) 13 para.c: recebe como parâmetro um inteiro, salva seu pid e parâmetro, espera por seu conteúdo em segundos e sai. int main(int argc, char **argv) { FILE *arq; if (argc!= 2){printf("\nERRO: para <tempo>\n");return(1);} arq = fopen("t.txt","at"); fprintf(arq,"%d;%d\n",getpid(),atoi(argv[1])); fflush(arq); fclose(arq); printf("sou %d e vou dormir %d segundos\n",getpid(),atoi(argv[1])); sleep(atoi(argv[1])); printf("sou %d e dormi %d segundos\n",getpid(),atoi(argv[1])); return(0); }

Coisas do sistema operacional (UNIX/LINUX) 14 controla.c: dispara uma série de para.c, lê o conteúdo do arquivo gerado por eles e verifica a execução. int main(void) { int mpid[5],mtempo[5],i; int mpara[5] = {20,30,40,50,60}; int final[5] = { 0, 0, 0, 0, 0}; int ainda_tem = 5; char linha[100]; FILE *arq; for (i = 0 ; i < 5 ; ++i) { sprintf(linha,"./para %d &%c",mpara[i],(char)('\0')); system(linha); sleep(1); }

Coisas do sistema operacional (UNIX/LINUX) 15 controla.c: dispara uma série de para.c, lê o conteúdo do arquivo gerado por eles e verifica a execução. arq = fopen("t.txt","rt"); for (i = 0 ; i < 5 ; ++i) { fscanf(arq,"%d;%d\n",&(mpid[i]),&(mtempo[i])); } fflush(arq); fclose(arq);

Coisas do sistema operacional (UNIX/LINUX) controla.c: dispara uma série de para.c, lê o conteúdo do arquivo gerado por eles e verifica a execução. while (ainda_tem>0){ for (i = 0 ; i < 5 ; ++i){ if (!final[i]){ sprintf(linha,"ps p %d -o comm= >>/dev/null ; echo $? > res.txt%c",mpid[i],(char)('\0')); system(linha); sleep(1); arq = fopen("res.txt","rt"); if (((char)fgetc(arq))!= ((char)('0'))){ printf("o %d que dormiu %d segundos acabou! \n",mpid[i],mtempo[i]); --ainda_tem; final[i] = 1; } // if fclose(arq); } // if } // for } // while printf("\nterminaram todos!\n"); return(0);} // main() 16

Tópicos Especiais Aula 03 Revisão e Conceitos C e Unix - FIM