![](https://forum.armkb.com/images/enlighten/misc/cat_top_ls.gif) |
stdout redirection |
![](https://forum.armkb.com/images/enlighten/misc/cat_top_rs.gif) |
17.08.2004, 06:04
|
#1
|
Ребе - коп!
Join Date: 03 2003
Location: sfba
Age: 47
Posts: 4,189
Rep Power: 5
|
stdout redirection
Люди, никаких мыслей нет как можно в своем же процессе stdout редиректнуть?
|
|
|
17.08.2004, 06:20
|
#2
|
Грустно...
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
|
Серге, как я уже предлагал - вот решение.
PHP Code:
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int main()
{
FILE * f = ::freopen("a.txt", "w", stdout);
printf("test!\n");
cout << "test1" << endl;
fclose(f);
return 0;
}
все запишется в файл a.txt
|
|
|
17.08.2004, 06:27
|
#3
|
Ребе - коп!
Join Date: 03 2003
Location: sfba
Age: 47
Posts: 4,189
Rep Power: 5
|
Ой Вить, то была другая задача. я тогда про цоут спрашивал. streambuf -ом нормально получилось.
Мне не в файл надо а редиректать к примеру в стринг. и реалтиме выводить стринг по мере поступления строк. мониторить этот файл довольно неинтересно. Вот если б FILE * связать с цоут -ом.. было бы интересно.. а как..
вот popen() вроде интересня штука. ща почитаюсь..
|
|
|
17.08.2004, 06:31
|
#4
|
Грустно...
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
|
ну смотри, я тут цоут и связал с FILE* ом, кстати.
А чтоб в стринг, то это уже не пойдет... пользуйся stringstream - ом заместо cout - а.
|
|
|
17.08.2004, 06:36
|
#5
|
Ребе - коп!
Join Date: 03 2003
Location: sfba
Age: 47
Posts: 4,189
Rep Power: 5
|
Уф. вопшем сенц: есть функции, к которым доступа я не имею(т.е. заменить там ничего не могу.), которые в моем процессе же вызывают printf(). Вместо того чтоб выводить на stdout мне надо выводить это дело в логвиндоу к примеру.
|
|
|
17.08.2004, 06:38
|
#6
|
Грустно...
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
|
А лог виндоу может следить за файлом, когда в него что либо записывается?
Например - проверять лас врайт дейт? Если может - тогда, как сделал я в примере переводи все в лог файл, а лог виндоу пусть из него грузит.
|
|
|
17.08.2004, 07:07
|
#7
|
Ребе - коп!
Join Date: 03 2003
Location: sfba
Age: 47
Posts: 4,189
Rep Power: 5
|
Когда проверять ласт врайт дейт? Всегда? Это наихудший вариант. НОвый тред для этого надо. Или сигнал генерируется? ворде генерируется на стейт чендж..
Так, подругому:
как мне поймать факт изменения файла? система линукс.
|
|
|
17.08.2004, 07:12
|
#8
|
Грустно...
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
|
про линукс это уже не ко мне ![Wink](https://forum.armkb.com/images/smilies/wink.gif)
ну кстати можно так. Раз в 2 секунды читать файл.
Если не будет новых записей - то ничего не прочтется
если будут прочтется. Только лог файл надо быдет открыть с шарингом на запись.
|
|
|
17.08.2004, 07:22
|
#9
|
Ребе - коп!
Join Date: 03 2003
Location: sfba
Age: 47
Posts: 4,189
Rep Power: 5
|
Это наихудший вариант...
Вот в libc manual написано : if you set the 0_ASYNC status flag on a file descriptor, a SIGIO signal is sent whenever input or output becomes possible on that file descriptor.
Кто -нить знает что значит бикамс поссибл?
|
|
|
17.08.2004, 07:23
|
#10
|
Грустно...
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
|
как только в файл можно что-либо записать или прочитать - будет тебе сигнал.
|
|
|
17.08.2004, 07:28
|
#11
|
Ребе - коп!
Join Date: 03 2003
Location: sfba
Age: 47
Posts: 4,189
Rep Power: 5
|
а когда это происходит? каждый раз как запишу в файл? или при смене стейта файла? А ладно, ща попробую
|
|
|
18.08.2004, 09:12
|
#12
|
Дошкольник
Join Date: 03 2003
Location: 2A
Age: 56
Posts: 104
Rep Power: 0
|
|
|
|
20.08.2004, 16:29
|
#13
|
Guru Apprentice
Join Date: 02 2002
Location: /dev/null
Age: 47
Posts: 524
Rep Power: 0
|
Speedy, отвечу не как программист, а как админ: если мне надо следить за файлом и показывать изменения "по мере" - я пользуюсь програмкой tail с опцией -f. Как это запрограммировать - не знаю, но те кто этот tail написали точно знают. А на счет becomes available: я так думаю если кто-то файл отрыл для экслкюзивного чтения/записи (lock поставил каким-либо образом) а потом файл "отпустил" - вот у тебя файл и become available будет.
|
|
|
All times are GMT. The time now is 21:18. |
|
|