The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Выталкивание буфера в unix"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Выталкивание буфера в unix"  
Сообщение от lexxer email(ok) on 13-Мрт-07, 18:57 
Есть такой перловский скрипт:

Внутри делается fork.
Child процесс запускает посредством system скрипт(make), который в свою очередь вызывает последовательно 3 скрипта. Последний третий скрипт запрашивает ввод у пользователя.
Весь аутпут child-a направляю в файл с тем чтобы родитель мог запарсить его лог и предпринять соответствующие действия.
Так вот когда поступает сигнал верхнему родителю SIGTTIN в этот момент в файле находится лог только от первых двух скриптов, записи от 3-го будут присутствовать только после его собсно завершения.

Доступа к этим 3-м скриптам нету физически, как и к их вызывающему (make)

Вопрос: как заставить прогу вытолкнуть буфер в файл.

Вот код:

#!/bin/perl
use Tk 804;
use strict;

my $pid = "";
$pid = fork();

if (not defined $pid)
     {print "Cannot create child process(fork)";return 1;}
   elsif ($pid == 0)  # child process
    {
     open(STDOUT, ">logfile");
     $| = 1;  
     system "make ....... ";
     exit;      
    }
   else  #parent process
    {
     $| = 1;
     $SIG{'TTIN'} = sub {    .....   };

     my $MW = MainWindow->new;
     MainLoop;
    }    

Заранее спасибо

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Выталкивание буфера в unix"  
Сообщение от cat (??) on 14-Мрт-07, 09:03 
Если вы запускаете один дочерний процесс,
и потом дождаетесь его выполнения, то
по-моему, не имеет смысла его запускать.
Просто используйте system без всяких
форков. Будет проще и понятней.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Выталкивание буфера в unix"  
Сообщение от lexxer email(ok) on 14-Мрт-07, 10:03 
>Если вы запускаете один дочерний процесс,
>и потом дождаетесь его выполнения, то
>по-моему, не имеет смысла его запускать.
>Просто используйте system без всяких
>форков. Будет проще и понятней.


Но тогда ГУИ будет виснуть, против чего собсно форк и делался.
В коде далее устанавливается реакция на сигнал SIGCHLD, по которой родительский процесс узнает что потомок умер.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру