Portál AbcLinuxu, 24. října 2025 20:18
#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.