Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

dopmat / block2 / printns

.c
Скачиваний:
12
Добавлен:
15.03.2015
Размер:
1.26 Кб
Скачать
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>

#define BUF_SIZE 0x100 //инициализация размера буфера

int main (int argc, char * argv[])
{
  int pipedes[2];
  pid_t pid;
  pipe(pipedes);
  pid = fork(); //создание дочернего процесса
  if ( pid > 0 ) //выполнение в родительском процессе
  {
    char buf[BUF_SIZE];
    int len;
    close(pipedes[1]); //закрытие ненужного дескриптора
    while ((len = read(pipedes[0], buf, BUF_SIZE)) > 0) //чтение из потока в буфер
      write(1, buf, len); //запись содержимого буфера в станд. поток вывода
    close(pipedes[0]); //закрытие потока
  }
  else //выполнение в дочернем процессе
  {
    close(pipedes[0]); //закрытие ненужного дескриптора
    dup2(pipedes[1], 1); //перенаправление содержимого станд. потока вывода в поток
    execve("/bin/netstat", NULL, NULL); //вызов процесса netstat вместо дочернего
  } 
  return 0;
}				
Соседние файлы в папке block2