我試圖用C++編寫代碼,在linux中執行類似tail -f
的操作。我發現這個問題: How to read a growing text file in C++?並實施相同。我創建了一個temp.txt
並開始做echo "temp" >> temp.txt
。但是我的程序不打印對文件所做的更新。我做錯了什麼?這是我使用C++爲什麼我的代碼不能打印更新到give文件
#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
我試圖在Linux計算機上相同的代碼,它工作正常的代碼,但它不工作在Mac上。我使用gcc
來編譯代碼。
gcc -v
給
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
更新2
我進一步研究和認識,我沒有用gcc畢竟。我已經單獨安裝了gcc,現在工作正常。這是在clang
中的錯誤嗎?
對不起同一單元。更新後的第二個 –
我想這是Mac gcc的一個問題 – banarun