Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

неименованый канал возврата отработаной программы

39K
27 мая 2009 года
imax_
20 / / 01.05.2009
Пытаюсь организовать трубопровод по каналу которого будет запускаться указаная программа и результат её выполнения будет передан обратно запускаемой программе для разбора.
написал код который порождает дочерний процесс и посредством execl переопределяет своё содержимое вызовом другой программы



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

#define PATH "/bin/cat"
#define SORT "cat"

int print_help();


int main(int argc, char* argv[])
{

if(strcmp(argv[1],"-h") == 0 || argv[2] == NULL)
{
print_help();
}


if(argv[1] != NULL && argv[2] != NULL)
{


//data type
pid_t pid;
int rv;



//create new process
pid=fork();


if(pid == -1)
{
perror("fork");
exit(1);
}



//this process PARENT
if(pid != 0)
{
printf("\n\n*******PARENT*******\n");
printf(" PARENT: PID - %d\n", getpid());
printf(" PARENT: PID my CHILD %d\n", pid);
printf(" PARENT: i wait to exit()...\n");

wait(&rv); //waiting finish process
printf(" PARENT: code exit CHILD:%d\n",WEXITSTATUS(rv));
printf(" PARENT: Exit!\n");

}


//this process CHILD
if(pid == 0)
{
printf("\n\n*******CHILD*******\n");
printf(" CHILD: PID - %d\n", getpid());
printf(" CHILD: PID my PARENT - %d\n",getppid());

printf("ARG0 - %s, ARG1 - %s ",argv[0],argv[1]);
printf("\n@@@@@@@Print file SORT:@@@@@@@\n");

execl (PATH, SORT, argv[1], argv[2], NULL);
_exit (rv); //without updating flow
}

}


}



//function print help
int print_help()
{
printf("\n******* HELP MAN *******\n Enter name sort file, and additional key \n example: \n ./orderfile -b orderfile.c\n");
return 0;
}

каким образом в дочернем процессе организовать двусторонний трубопровод, по даному условию:

Программа fpipe должна вызвать на выполнение программу cmd, передав ей, ес-
ли указаны, аргументы args. Стандартный вывод запущенной программы следует с
помощью неименованного канала переназначить таким образом, чтобы программа
fpipe читала его построчно


спасибо.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог