Stavo cercando di scrivere un codice in C++ fa qualcosa come tail -f
in linux. Ho trovato questa domanda: How to read a growing text file in C++? e implementato lo stesso. Ho creato un temp.txt
e ho iniziato a fare echo "temp" >> temp.txt
. Ma il mio programma non sta stampando gli aggiornamenti fatti sul file. Cosa sto facendo male? Questo è il codice che sto utilizzandoC++ Perché il mio codice non stampa gli aggiornamenti apportati al file di donazione
#include <iostream>
#include <string>
#include <fstream>
#include <unistd.h>
int main()
{
std::ifstream ifs("temp.txt");
if (ifs.is_open())
{
std::string line;
while (true)
{
while (std::getline(ifs, line)) std::cout << line << "\n";
if (!ifs.eof()) break; // Ensure end of read was EOF.
ifs.clear();
sleep(3);
}
}
return 0;
}
UPDATE
ho provato lo stesso codice su una macchina Linux e stava funzionando benissimo, ma non funziona su Mac. Stavo usando gcc
per compilare il codice.
gcc -v
dà
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.3.0
Thread model: posix
UPDATE 2
ho indagato ulteriormente e si rese conto che non stavo usando gcc dopo tutto. Ho installato gcc separatamente e ora funziona bene. Si tratta di un bug in clang
?
dispiaciuto per lo stesso scatto. aggiornato secondo –
Immagino che questo sia un problema con Mac gcc – banarun