next up previous
Next: Exemplo 2: Cópia de Up: Descrição de algumas primitivas Previous: Primitiva read()

Exemplo 1: Redirecionamento da saída padrão

Este programa executa o comando shell ps, depois redireciona o resultado para o arquivo fic_saída. Assim, a execução deste programa não deve imprimir nada na tela. A primitiva system() executa o comando passado como argumento.

                /* arquivo test_dup2.c */

#include <errno.h>
#include <stdio.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>

#define STDOUT 1

int main()
{
 int fd ;
     /* associa fic_saida ao descritor fd */
     if ((fd = open("fic_saida",O_CREAT|O_WRONLY|
                    O_TRUNC,0666)) == -1){
          perror("Error na abertura de fic_saida") ;
          exit(1) ;
     }
     dup2(fd,STDOUT) ;  /* duplica a saida padrao */
     system("ps") ;     /* executa o comando */
     exit(0);
}

Resultado da execução:

euler:~/> test_dup2
euler:~/> more fic_saida
  PID TTY STAT  TIME COMMAND
 9819  ?  S    0:01 -tcsh 
11815  ?  S    0:00 test_dup2 
11816  ?  R    0:00 ps

Note que outros redirecionamentos seguem o mesmo princípio, e que também é possível a realização de redirecionamentos de entrada e de saída.



Celso Alberto Saibel Santos 2000-11-14