Re: pipe HELP!!
От: patriotyk  
Дата: 14.06.06 11:08
Оценка:
Здравствуйте, mukos, Вы писали:

M>Второй день с ума схожу , десятки нелпов перелистал — у меня все вроде правильно написано

M>но проблема в следующем.

M> Хочу сделать пайп между моей программой и запускаемой.

M>Код такой-

M> pipe(p_stdout);


M> if((pid1=fork())==-1)_RETURN_ERROR("fork2 fail\n")

M> printf("pid1 = %d\n",pid1);

M> _ANSWER_OK("ok")



M> if(pid1!=0)

M> {

M> close(p_stdout[1]);

M> printf("ccccccc\n");
M> for(;)
M> {
M> while((len_recieve=read(p_stdout[0],&c,1))>0)
M> printf("letter=%c\n",c);
M> }

M> }

M> else
M> {
M> close(p_stdout[0]);
M> dup2(p_stdout[1], fileno(stdout));
M> printf("bbbbbbb\n");
M> execvp("/intr.o",argv);

M> printf("after execv\n");


M> while(1)

M> sleep(3);
M> }
M>код конечно кривой и незаконченный , но я уже всяк перепробовал.
M>Проблема в следующем "bbbbbbb" выводиться сразу же причем по буквам
M>- т.е. пайп в принципе работает.Програама /intr.o просто в цикле гоняет
M>printf но в своей программе я их получаю не сразу а порциями по несколько штук.
M>Т.е. есть такое ощущение что набиваеться внутренний буфер а потом
M>выдаеться скопом.Причем через приличное время(там sleep в цикле стоит)
M>если его убрать то все это конечно быстрее но тоже пачками.
M>Причем это под QNX а под RedHat вообще ничего не получаю
M>хотя пайп между папой и сыном работает(bbbbbbb)
M>Люди хелп!!!!

а ты не так пиши, можно прще:
FILE * pipe = popen("app2","r");
потом с помощю функции gets(), читаеш с канала даные.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.