Я создал библиотеку, в которой есть фрагмент кода, подобный следующему
int a;
a = 5;
std::ofstream outFile("File.txt");
outFile << "Values : " << std::endl;
outFile << a << std::endl;
Теперь эта библиотека используется двумя разными процессами, которые выводят File.txt с двумя разными выводами.
Выход 1:
Values :
Результат 2:
Values :
5
Я нашел некоторые ресурсы, в которых упоминается передача целых чисел в потоки путем преобразования в строки с помощью std::to_string (Преобразование целого числа в строку в C++). Но я хочу знать, что заставляет эти два процесса действовать по-разному в одном и том же сценарии. Такое ощущение, что один из процессов вносит какие-то изменения в потоки в глобальном состоянии.
В Linux, если два процесса пытаются записать в один и тот же файл, результат не определен. Если вы добавите PID к имени файла, вы получите правильный результат.





Попробуйте запустить два разных процесса в разных каталогах. Судя по тому, что вы показали, более чем вероятно, что они оба пытаются получить доступ к одному и тому же файлу. Это не то, что ты можешь сделать. Посмотрите эта почта, в котором рассказывается о том, почему попытка использовать потоки для открытия одного и того же файла дважды в одно и то же время не работает.
Спасибо за ответ. но эти процессы запускались один за другим. Так что не было сомнений в том, что можно писать один и тот же файл одновременно.
Вы использовали функцию закрытия, чтобы убедиться, что первый процесс не оставляет файл открытым?
Без минимальный воспроизводимый пример вам невозможно помочь (кроме как безумно угадывать). Найдите время, чтобы просмотреть как задавать хорошие вопросы, а также этот контрольный список вопросов.