• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Linux - przekierowanie outputu programu do pliku

VPS Starter Arubacloud
0 głosów
371 wizyt
pytanie zadane 18 sierpnia 2020 w Systemy operacyjne, programy przez MsMaciek123 Pasjonat (24,760 p.)

Cześć,

Mam pytanie: Dlaczego przekierowanie outputu programu do pliku uzupełnia zawartość po zakończeniu programu? Np. taki kod:

import time
print('a')
time.sleep(100)
print('b')

Uruchomiony przy użyciu

python3 test.py > test.out

Tworzy plik test.out, jednak jest on pusty na początku, dopiero po 100 sekundach pokazują się dwie literki. Jest jakiś sposób, aby najpierw pojawiła się literka a i zostało to zaktualizowane do pliku a później b?

1 odpowiedź

+1 głos
odpowiedź 18 sierpnia 2020 przez adrian17 Ekspert (344,100 p.)

Ponieważ stdout typowo jest buforowany (a bufor jest zrzucany np po przekroczeniu N znaków, przy nowej linii lub na końcu programu). Żeby wymusić flush bufora:

print('a', flush=True)

 

komentarz 18 sierpnia 2020 przez MsMaciek123 Pasjonat (24,760 p.)
A jest jakiś sposób, aby wymusić to w terminalu?
komentarz 18 sierpnia 2020 przez MsMaciek123 Pasjonat (24,760 p.)
a dla programów z innymi rozszerzeniami?
komentarz 18 sierpnia 2020 przez adrian17 Ekspert (344,100 p.)
Chyba... nie zrozumiałem pytania. Innymi rozszerzeniami?
komentarz 18 sierpnia 2020 przez Oscar Nałogowiec (29,290 p.)

@MsMaciek123, polecenie stdbuf umożliwia uruchomienie dowolnego programu z ustalonym bufora i standardowych strumieni. 

komentarz 19 sierpnia 2020 przez MsMaciek123 Pasjonat (24,760 p.)

Jak mam tego użyć?

Próbuję:

stdbuf -o0 python3 test.py > test.txt

Ale to nic nie daje :/

komentarz 19 sierpnia 2020 przez adrian17 Ekspert (344,100 p.)
Podtrzymuję pytanie, co masz na myśli przez "inne rozszerzenia".

W przypadku który wysłałeś możesz po prostu użyć tego, co wyżej podlinkowałem w dokumentacji.
komentarz 24 sierpnia 2020 przez MsMaciek123 Pasjonat (24,760 p.)
Programy .jar, .sh

Podobne pytania

0 głosów
1 odpowiedź 124 wizyt
0 głosów
1 odpowiedź 407 wizyt
0 głosów
0 odpowiedzi 289 wizyt
pytanie zadane 24 listopada 2018 w Systemy operacyjne, programy przez Riddick Bywalec (2,600 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...