Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с потоками, поток stdout 
:(
    Опции темы
centab
Дата 4.6.2007, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.4.2006

Репутация: нет
Всего: нет



после перенаправлений стандартный потоков в самом конце в теле главноой функции не работает стандартный вывод. Как его настроить и почему он не работает?
Код

/*
Написать программу, создающую и заполняющую текстовый файл.
Информацию этого текстового файла через межпроцессный канал передать в параллельный процесс.
В нем после каждого символа тек-ста вписать в файл 
порядковый номер и передать через межпроцесс-ный канал в параллельный процесс,
где разделить каждый символ со своим номером пробелом.
Из текущего процесса переслать получен-ную информацию 
в исходный процесс и там вывести на печать. 
Пре-дусмотреть возможность прерывания от клавиатуры

*/
#include <stdio.h>
#include <signal.h>
#include <setjmp.h>
#include <unistd.h>
#include <sys/types.h>


jmp_buf NZ; 

    char* name1; char* name2; 

void Interrupt()
{

    signal(SIGINT, Interrupt);
    printf("prerivanie!\n");

    siglongjmp(NZ, 1); 
} 


int main()
{
    int k=0,l=0;
    int iProc[2], iProc1[2], iProc2[2];  
    int iSost, iSost1;
    FILE* file1;
    char ch, bc;
    signal(SIGINT, Interrupt); 
    sigsetjmp(NZ, 1);
    file1=fopen("labka","w+");
    while( k<2){
          ch=getc(stdin);
          if(ch=='\n')  k++;
          fputc(ch,file1);
    }
    sigsetjmp(NZ, 1);
    pipe(iProc);


    if(fork()==0) 
      {
      printf("sin1\n");
      rewind(file1);
      dup2(1,prn);
      close(1); 
      close(iProc[0]); 
      dup2(iProc[1], 1);
      close(iProc[1]);   
      while(!feof(file1)){
          bc=getc(file1);
          putc(bc,stdout);
      }
     exit(0); 
    }

    else 
    {
     
      printf("otez1\n");
        wait(&iSost);   
        pipe(iProc1);

        if(fork()==0) 
        {
          printf("sin2\n");
          close(iProc[1]);
          close(1);
          close(0);
          dup2(iProc[0],0);
          close(iProc[0]); 
          close(iProc1[0]); 
          dup2(iProc1[1], 1);
          close(iProc1[1]);
          while(!feof(stdin)){
            bc=getc(stdin);
            if(bc=='\n') { printf("%c",'\n'); continue;}
            if(bc==EOF) break;
            l++;
            printf("%c%d",bc,l); 
          }
          dup2(1,iProc1[1]);
          exit(0);
        }
        else 
          {
             printf("otez2\n");
             close(iProc1[1]);
             close(0);
             dup2(iProc1[0],0);
             pipe(iProc2);
             close(iProc2[0]);
             dup2(iProc2[1],1);
             close(iProc2[1]);
             while(!feof(stdin)){
               scanf("%c%d",&ch,&tt);
               printf("%c%d",ch,tt);
            }
            
         }
    }    
// !!!!!!!! не работает printf !!!!!!!!!!!!!!    
  printf("privet");
 
   return 0;

}


M
MAKCim
Пользуйтесь тегом код!



Это сообщение отредактировал(а) MAKCim - 5.6.2007, 14:22
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0475 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.