C++ 除非用户退出应用程序,否则日志文件不可见

C++ 除非用户退出应用程序,否则日志文件不可见,c++,blackberry-10,qnx,momentics,C++,Blackberry 10,Qnx,Momentics,我有一个问题,我正在记录一些应用程序内的信息,如请求、消息、响应,而在代码的这一部分中,这是它发生的地方。我的目标是在应用程序运行时查看日志文件,但现在似乎没有,因此用户必须退出应用程序,然后转到公用文件夹才能查看日志。如果需要,我可以提供更多信息 void LogClass::log(const char* pcszComponent, const char* pcszLevel, const CF1String& title, const CF1String& messag

我有一个问题,我正在记录一些应用程序内的信息,如请求、消息、响应,而在代码的这一部分中,这是它发生的地方。我的目标是在应用程序运行时查看日志文件,但现在似乎没有,因此用户必须退出应用程序,然后转到公用文件夹才能查看日志。如果需要,我可以提供更多信息

 void LogClass::log(const char* pcszComponent, const char* pcszLevel, const CF1String& title, const CF1String& message)
    {
        m_guard.lock();

        QByteArray byteArray(QTime::currentTime().toString("HH:mm:ss.zzz").toAscii());
        XXString logMessage = XXFormatString("[%s] [%7s] [%4s] [%08X] [%s] [%s]\r\n", byteArray.constData(), pcszLevel, pcszComponent, QThread::currentThreadId(), title.c_str(), message.c_str());

        if (!m_pLogFile) {
            createLogFile();
        }

        if (m_pLogFile) {
            fputs(logMessage.c_str(), m_pLogFile);
            fflush(m_pLogFile);
        }

        m_guard.unlock();
    }

提前感谢。

您在每条消息之后使用带fflush的缓冲输出,因此您应该能够看到文件更新(因为数据被写入操作系统)。您看不到它的可能原因是操作系统没有将其内部文件缓冲区刷新到磁盘。您可以尝试或

谢谢AlexT的回答,我不确定我是否完全理解给定的解决方案,因为我正在处理BB10平台,您认为您可以给我一个在给定BB10平台上Windows或Linux上fsync提交函数的示例吗?Thanks@MRMido我既没有使用BB10也没有使用QNX,但我看到QNX有,所以可以像
fsync(fileno(m_pLogFile))