SORU
11 Kasım 2009, ÇARŞAMBA


Neden basit bir beşgen kullanmaktır bir yeni satır biçim dizesi sürece aramadan sonra flush değil mi?

Neden printf bir yeni satır biçim dizesi sürece aramadan sonra flush değil mi? Bu POSIX davranış mı? Nasıl hemen her zaman floş, basit bir beşgen kullanmaktır alabilir miyim?

CEVAP
11 Kasım 2009, ÇARŞAMBA


stdout akış tamponlu, bu yüzden tek bir yeni satır (ya söyledi o zaman) ulaştıktan sonra tampon ne gösterecektir. Yazdırmak için bir kaç seçenek var hemen:

Stderr fprintf yerine kullanarak yazdırmak için:

fprintf(stderr, "I will be printed immediately");

İhtiyacınız olan her an floş stdout fflush kullanarak:

printf("Buffered, will be flushed");
fflush(stdout); // Will now print everything in the stdout buffer

Edit: Andy Ross yorum aşağıda da setbuf kullanarak: stdout üzerinde ara belleğe alma devre dışı bırakabilirsiniz

setbuf(stdout, NULL);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kingsimba357

    Kingsimba357

    7 NİSAN 2008
  • Matt Stokes

    Matt Stokes

    22 Ocak 2008
  • whiteboy7thst

    whiteboy7ths

    1 Temmuz 2009