Zapewnienie, że mój program nie wykonuje współbieżnego zapisu pliku

Piszę skrypt, który jest wymagany do wykonywania bezpiecznych zapisów do dowolnego pliku, tj. Dołączania pliku, jeśli nie wiadomo, że inny proces do niego zapisuje. Zrozumiałem teorię, że równoczesne zapisy uniemożliwiono za pomocą blokad zapisu w systemie plików, ale w praktyce wydaje się, że tak nie jest.

Oto jak skonfigurować mój testowy przypadek: Przekierowuję wyjście polecenia ping:

ping 127.0.0.1 > fileForSafeWrites.txt

Z drugiej strony mam następujący kod Pythona próbujący zapisać do pliku:

handle = open('fileForSafeWrites.txt', 'w')
handle.write("Probing for opportunity to write")
handle.close()

Równoczesne uruchamianie obu procesów z wdziękiem zakończone. Widzę tofileForSafeWrites.txt zamienił się w plik z zawartością binarną, zamiast blokady zapisu wydanej przez pierwszy proces, który chroni ją przed wpisaniem przez kod Pythona.

Jak wymusić, aby jeden lub oba moje współbieżne procesy nie kolidowały ze sobą? Przeczytałem, że ludzie radzą sobie z możliwością uzyskania pliku zapisu jako dowodu na bezpieczne zapisywanie pliku, na przykład whttps://stackoverflow.com/a/3070749/1309045

Czy to zachowanie jest specyficzne dla mojego systemu operacyjnego i Pythona. Używam Python2.7 w środowisku Ubuntu 12.04.

questionAnswers(2)

yourAnswerToTheQuestion