質問するログイン新規登録

回答編集履歴

3

被害のケースを追加

2016/10/25 03:00

投稿

v_v
v_v

スコア47

answer CHANGED
@@ -33,7 +33,8 @@
33
33
  // ケース:他アプリでテスト用ファイルを削除、
34
34
  // 本番用ファイルに差し替える操作が
35
35
  // ここの僅かなタイミングで発生した場合、
36
- // 本番用ファイルが書き換えられるの等問題が発生する恐れがあります。
36
+ // 被害:本番用ファイルが書き換えられるの等問題が発生する恐れがあります。
37
+ // =>最初に確認したファイルと開いたファイルの実体不一致による不具合の発生の恐れ。
37
38
  // 対策:ファイルの存在確認からファイルのオープンをアトミックに行うこと
38
39
 
39
40
  File fp = File(path, "rb+");

2

言い回しとと訂正点の修正

2016/10/25 03:00

投稿

v_v
v_v

スコア47

answer CHANGED
@@ -1,8 +1,14 @@
1
- 回答者様へは申し訳ありませんが
1
+ 回答者様へは申し訳ありませんが、そのままではコードを使うことができないため
2
+ BA取り消しさせていただきました・・・
2
3
  回答について検証を致しましたので、頂いた回答への補足を致します。
4
+ また、やはり標準ライブラリでは解決できそうにないため、OS毎にコードを分ける実装をしたいと思います。
3
5
 
6
+ お手数をおかけいたしました。
7
+ ありがとうございます。
8
+
4
9
  実際にコードを書く際は以下のケース等に配慮することが必要です。
5
10
 
11
+
6
12
  ```D言語
7
13
  // --略--
8
14
  try {

1

言い回しを変更しました

2016/10/25 02:53

投稿

v_v
v_v

スコア47

answer CHANGED
@@ -1,12 +1,12 @@
1
1
  回答者様へは申し訳ありませんが
2
- 回答への補足となります。
2
+ 回答について検証を致しましたので、頂いた回答への補足を致します。
3
3
 
4
- この回答は完全ではありませんので、実際にコードを書く際は以下のケース等に配慮することが必要です。
4
+ 実際にコードを書く際は以下のケース等に配慮することが必要です。
5
5
 
6
6
  ```D言語
7
7
  // --略--
8
8
  try {
9
- // ファイルがなければ新規作成
9
+ // ファイルがなければ新規作成(ここでファイルが有った場合を考えます)
10
10
  if (!exists(path)) {
11
11
  new_file = true;
12
12
  scope File fp = File(path, "ab");