Portál AbcLinuxu, 7. května 2025 05:40
#include<stdio.h> void main() { fprintf(stdout, "a\n"); fprintf(stderr, "b\n"); fprintf(stdout, "c\n"); fprintf(stderr, "d\n"); }Ked ho spustim vidim vystup:
a b c dChcem to presmerovat do suboru "log". Skusil som nasledovne:
$ ./a.out > log; clear; cat log a c $ ./a.out 2>&1 > log; clear; cat log a c $ ./a.out > log 2>&1; clear; cat log b d a c (nespravne poradie)Jak dosiahnut aby to co vidim na obrazovke bolo aj v subore?
Řešení dotazu:
Ptal bych se spíš proč než jak. Logování mívá přesné timestampy z dobrých důvodů.
Jsou případy a situace, kdy žádné chronologické pořadí neexistuje.
Pak by to měl být jeden soubor a nikoliv dva oddělené soubory.
Všechno se dá psát dvojmo, pokud je to nutné, jednou odděleně a jednou do společného souboru.
$ ./a.out | tee z b d a c $ cat z a c $ ./a.out 2>&1 | tee z; echo aaa; cat z a b c d aaa a b c dfunguje
$ ./a 2>&1 | tee z; echo aaa; cat z b d a c aaa b d a c
#include <stdio.h> int main() { setbuf(stdout, NULL); fprintf(stdout, "a\n"); fprintf(stderr, "b\n"); fprintf(stdout, "c\n"); fprintf(stderr, "d\n"); }
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.