FTPで書き込み中のファイルがあるとします。そのファイルが、書き込み中なのか、それとも、書き込みが完了したのかを、知りたいのですが、良い方法はありますでしょうか。書き込みファイル名はあらかじめ、わかっています。(書き込み中に読んだ場合、最後まで読み切ることが出来ないために書き込み完了迄待ちます)当方で、調査した限りでは、ファイル名を指定して、そのファイルが、他プロセスによってオープンされているか否かを知るシステムコールは存在しませんでした。OSは、sun solaris10を使用の予定ですが、UNIX系(linux含む)で実現可能であれば、かまいません。
No.11
- 回答日時:
もう一案。
手元にcygwinしかないので確認できないのですが。
まず実験として、
(1)pfilesコマンドでFTPデーモンのファイルディスクリプタ一覧を得る。
(2)ファイルディスクリプタ一覧のinode番号で、目的とするファイルが使用中か確認する。目的のファイルのinode番号はstatで得ておく。
なんてのはどうでしょうか?
pfilesコマンド自体の機能もソース見ればわかると思うので、プログラム上に吸収可能だと思います。
回答ありがとうございます。いくつかの理由があって、たぶん、この方法を採用することは、無いとおもいますが、デーモンが「特定のファイルを書き込み中」か否かを判断する方法としては、最もこの案が、正解に近いと思います。又、pfilesコマンドの存在について判っただけでも収穫でした。ありがとうございました。
No.12
- 回答日時:
> 運用上、上記の短所が問題にならなければ、採用の候補…
あはは。ありがとうございます(笑)まぁ、人間、自分のアイデアを大事にしたいというのが普通ですから^^ ここは、議論の場ではないようですが、色々とアイデアを出し合うのは楽しいですね。ではでは、お邪魔しました^^
====
// ディレクトリから fname にファイル名を得る
…
char *p = strrchr(fname, '_');
if (p == NULL) return; // 約束違反のファイル名
char *q = strrchr(fname, '.');
if (q == NULL || q < p) return; // 約束違反のファイル名
*q = '\0';
size_t fsiz = atol(p + 1);
if (fsiz == 0) return; // サイズ0はおかしい(笑)
…
*q = '.';
stat(fname, &statbuf);
if (statbuf.st_size != fsiz) return; // 書き込み中?
…
===
# .netrc が適当に設定されているとして
…
fname=`basename $pathname`
fsiz=`ls -l $file | awk '{print $5}'`
remotefile=`echo $fname | sed -e "s/\\([^.]*\\)\\.\\([^.]*\\)/\\1_$fsiz\\2/"`
ftp $remotehost <<EOF
bin
put $pathname $remotefile
bye
EOF
===
とか、やればいいんじゃないですか?^^ 修正時刻のチェックは、エラー処理に活用できますね(現在時刻と最終修正時刻の差があまりに大きいにもかかわらず、サイズが異なる場合など)。
ソースまで提示していただき、ありがとうございます。mikaemi様の案が採用となった暁には、是非このソースも参考にさせていただきます。
No.13
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- USBメモリー・SDカード・フラッシュメモリー cdrの書き込みで、上手く行かない 3 2022/09/16 11:35
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- バックアップ パソコンからDVDへコピー 5 2022/08/18 14:02
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- システム 外付けHDDの初期化について 4 2023/03/05 21:19
- ドライブ・ストレージ windows10。切り取りと貼り付けは書き込み動作になりますか 3 2022/06/08 17:04
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
FTPの送信結果を検知したい
その他(プログラミング・Web制作)
-
シェルスクリプトでFTPの実行結果を取得するには
その他(プログラミング・Web制作)
-
ftpでファイルを転送時、タイムスタンプを維持したい
UNIX・Linux
-
-
4
renameコマンドについて
その他(プログラミング・Web制作)
-
5
ftp処理でmove(移動)を行いたい
その他(プログラミング・Web制作)
-
6
ファイルが書き込み中かどうかの判定方法は?
UNIX・Linux
-
7
FTPでputすると空ファイルが出来てしまう
その他(プログラミング・Web制作)
-
8
FTP受信直後に受け取ったファイルを処理するプログラムを起動するには?
UNIX・Linux
-
9
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
10
FTPでのGET
その他(ソフトウェア)
-
11
ftpコマンド出力結果の取得
その他(プログラミング・Web制作)
-
12
FTPで存在しないファイルをGETしたときの動作について
その他(コンピューター・テクノロジー)
-
13
FTPに接続し、 あるフォルダ内の一覧を取得する、、、という操作を Windows10のコマンドプロ
Windows 10
-
14
FTPコマンドの戻り値について
その他(OS)
-
15
FTPでPUTできない原因は何?
Mac OS
-
16
フルパスから最後のディレクトリ名を取得したい。
Visual Basic(VBA)
-
17
IPアドレス「0/16」とか「0/24」って何?
ネットワーク
-
18
TCP環境下でのファイル破損は起こるのか?
その他(コンピューター・テクノロジー)
-
19
更新していないのにフォルダの更新日付が変わってる
その他(パソコン・スマホ・電化製品)
-
20
Visual C++からftpを使う
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SNSなどで使われる、n回目とは...
-
中学生でも薬局でTENGAって買え...
-
仕事帰り社内の人と同じ時間に...
-
5ch
-
子どもは作らない方が賢い、ま...
-
誘いは難しい
-
メールソフト サンダーバード...
-
高2の女子です。 修学旅行で、...
-
職場で噂される男女とされない...
-
熟女の保険外交員って誘ってま...
-
自分から話しかけない人ってそ...
-
雑談たぬきについてなのですが...
-
CD-Rって一度しか書き込め...
-
横レス?横スレ?
-
職場の話しづらい異性。 元々は...
-
別れた途端に女友達や新しい女...
-
カカオトークのリンクの貼り付...
-
カカオトーク退会すると、エラ...
-
新卒女性です。男性の先輩から...
-
[国語] 掲示板スレッドは、建て...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SNSなどで使われる、n回目とは...
-
中学生でも薬局でTENGAって買え...
-
仕事帰り社内の人と同じ時間に...
-
高2の女子です。 修学旅行で、...
-
子どもは作らない方が賢い、ま...
-
誘いは難しい
-
熟女の保険外交員って誘ってま...
-
職場で噂される男女とされない...
-
5ch
-
カカオトークのリンクの貼り付...
-
雑談たぬきについてなのですが...
-
新卒女性です。男性の先輩から...
-
カカオトーク退会すると、エラ...
-
メールソフト サンダーバード...
-
自分から話しかけない人ってそ...
-
エクセルのデータはDVDに保...
-
障害者の嫁
-
ビデオ通話でのオナニーについ...
-
カカオトークで、私が送った写...
-
語尾に笑いが含まれる人の心理 ...
おすすめ情報