LINUX.ORG.RU
prog >> log 2>&1
anonymous
()
неа не работает так я пробывал...
на всякий случай shell - bash.

даже сырец prog приведу :)))

#include <cstdio>
int main()
{
printf ("step1\n");

char *p = NULL;
char a = *p;
return 0;
}

При чтении сразу Segmentation fault (так и задумано естественно, это-ж тест).
anonymous
()
А что тут работать то должно?

Строчка "step1" что ли в файл не выводится? И использования stderr я тут не наблюдаю. Ты часом не путаешь то, что выводит bash с тем, что выводит твоя программа?
Murr ★★
()
ты хочешь сказать что надпись Segmentation fault не идет на stderr ? или хочешь сказать что когда она идет на stderr запись в лог уже не идет ?
anonymous
()
Ответ на: комментарий от anonymous
Её выводит bash, по всей видимости, не приложение же ;)
Murr ★★
()
понятно что не приложение...
да ты прав этот мессадж не слить в лог:
#include <cstdio>
int main()
{
fprintf (stdout, "step1\n");
fprintf (stderr, "step2\n");

char *p = NULL;
char a = *p;
return 0;
}

хорошо но какого хрена пишеться только step2 ?
prog >> log 2>&1
cat log
step2
anonymous
()
Потому что stdlib ведёт буферизацию ввода-вывода stdout.
Если ты убиваешь процесс, то буфер не попадает в файл.
Попробуй fflush(stdout) после fprintf или же man setvbuf.
Murr ★★
()
ды ты прав а вроде по стандарту после \n должно fflush иться ?
anonymous
()
At program startup, three text streams are predefined and need not be opened explicitly - standard input (for reading conventional input), standard output (for writing conventional output), and standard error (for writing diagnostic output). As initially opened, the standard error stream is not fully buffered; the standard input and standard output are fully buffered if and only if the stream can be determined not to refer to an interactive device.

ISO/IEC 9899:999 (E)
7.19.3.7

Так что - fully buffered. То, о чем пишешь ты, - это line buffering.
Murr ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.