2

バッファを取得してコンテンツをファイルに書き込むこのメソッドがあります。

void writeTasksToDevice()
{

TaskInfo *task;
unsigned int i = lastTaskWritten;

printf("writing elihsa\n");
outputFile.write(" Elisha2", 7);
//pthread_mutex_lock(&fileMutex);

for(; i < (*writingTasks).size(); i++)
{
    task = (*writingTasks).at(i);
    if(NULL == task)
    {
        printf("ERROR!!! in writeTasksToDevice - there's a null task in taskQueue. By "
                " design that should NEVER happen\n");
        exit(-1);

    }
    if(true == task->wasItWritten)
    {
        //continue;
    }
    else // we've found a task to write!
    {

        printf("trying to write buffer to file\n");
        printf("buffer = %s, length = %d\n", task->buffer, task->length);<====PRINT HERE IS OK< PRINTING WHAT IS WANTED
        outputFile.write(task->buffer, task->length); <===SHOULD WRITE HERE
        printf("done writing file\n");
    }

}

//pthread_mutex_unlock(&fileMutex);


// TODO: check if we should go to sleep and wait for new tasks
// and then go to sleep




}

バッファの内容は次のとおりです。

タスク -> バッファ:elishaefla

タスク -> 長さ:10

次を使用して、別の init 関数でストリームを開きました。

outputFile.open(fileName, ios :: app);
if(NULL == outputFile)
{
    //print error;
    return -1;
}

しかし最後に、ファイルの内容は空で、何も書き込まれていません。

理由はありますか?

4

1 に答える 1

4

質問に確実に答えるのに十分な情報を提供していませんが、直面している可能性のある問題のいくつかを次に示します。

  1. のバッファをフラッシュしませんでしたofstream

  2. 後で開こうとしているファイルを閉じていませんでした(私が正しければoutputFile、グローバル変数であるため、プログラムが終了するまで自動的に閉じられません)

于 2012-05-14T15:21:35.350 に答える