

FTPで書き込み中のファイルがあるとします。そのファイルが、書き込み中なのか、それとも、書き込みが完了したのかを、知りたいのですが、良い方法はありますでしょうか。書き込みファイル名はあらかじめ、わかっています。(書き込み中に読んだ場合、最後まで読み切ることが出来ないために書き込み完了迄待ちます)当方で、調査した限りでは、ファイル名を指定して、そのファイルが、他プロセスによってオープンされているか否かを知るシステムコールは存在しませんでした。OSは、sun solaris10を使用の予定ですが、UNIX系(linux含む)で実現可能であれば、かまいません。

No.3
- 回答日時:
なるほど、そういうことでしたか^^
わたしなら、ファイルサイズを受け取るか、tatsu99 さんの1案を採用しますね。2案はレースコンディションがありそうですし。。3案は、ターゲットのファイルの種類が決まっていて、終了文字がきちんと決められるなら一番簡単な方法ですね。
tatsu99 さんの、1案が一番確実・簡単でいいですかね。
回答ありがとうございます。
>2案はレースコンディションがありそうですし。。
とのことですが、具体的にどのような状態を想定されてますでしょうか?
No.1
- 回答日時:
fopen(ファイル名,"r+")
オープンできれば書き込み終了、失敗ならば書き込み中。
ご回答ありがとうございます。提示していただいた方法を当方にて確認しましたところ、他のプロセスが、書き込み中でも、正常にオープン出来てしましました。
以下、書き込み側のソースです。
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
int main(int argc , char *argv[])
{
FILE *fp;
char area[256];
int i = 0;
if (argc == 1){
printf("%s 書き込みファイル名\n",argv[0]);
exit(0);
}
fp = fopen(argv[1],"w");
if (fp == NULL){
printf("fopen error\n");
exit(0);
}
while(1){
sprintf(area,"===============%d================\n",i++);
if (fputs(area,fp) == EOF){
printf("fputs error\n");
exit(0);
}
if (fflush(fp) == EOF){
printf("fflush error\n");
exit(0);
}
printf("%d完了\n",i);
sleep(10);
}
fclose(fp);
return(0);
}
以下、読み込み側のソースです。
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
int main(int argc , char *argv[])
{
FILE *fp;
char area[256];
int i = 0;
if (argc == 1){
printf("%s 読み込みファイル名\n",argv[0]);
exit(0);
}
fp = fopen(argv[1],"r+");
if (fp == NULL){
printf("fopen error\n");
exit(0);
}
printf("オープン成功\n");
fclose(fp);
return(0);
}
動作確認は
Solaris10(INTEL版)
cent-os 4.4 で行いました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
FTPでputすると空ファイルが出来てしまう
その他(プログラミング・Web制作)
-
FTPの送信結果を検知したい
その他(プログラミング・Web制作)
-
FTP受信直後に受け取ったファイルを処理するプログラムを起動するには?
UNIX・Linux
-
-
4
CSVファイルを読み込んでテーブルの更新
Oracle
-
5
FTPでPUTできない原因は何?
Mac OS
-
6
IPアドレスのセグメント
その他(インターネット接続・インフラ)
-
7
ftpコマンド出力結果の取得
その他(プログラミング・Web制作)
-
8
renameコマンドについて
その他(プログラミング・Web制作)
-
9
ftp処理でmove(移動)を行いたい
その他(プログラミング・Web制作)
-
10
ファイルのコピー正常終了を確認するためには、サイズを比較すればOK? それともバイナリ比較が必要?
Windows 10
-
11
ftpサーバー 接続できない
Windows 10
-
12
FTPエラー425
その他(コンピューター・テクノロジー)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
職場で噂される男女とされない...
-
SNSなどで使われる、n回目とは...
-
仕事帰り社内の人と同じ時間に...
-
カカオトークで、私が送った写...
-
雑談たぬきについてなのですが...
-
中学生でも薬局でTENGAって買え...
-
「○○するのが吉」について
-
「あくまで」「あくまでも」の意味
-
付き合ってそうな男女が職場に...
-
ベリファイとコンペアってどう...
-
もし男性で教員をしている人が...
-
語尾に笑いが含まれる人の心理 ...
-
5ちゃんねるの「ワッチョイ」の...
-
カカオトークのリンクの貼り付...
-
WordのデータをCD-Rに書き込む...
-
カカオトークで会話してるので...
-
職場で顔も見たくない声も聞き...
-
Outlook 2010の無視という機能...
-
友達にちゃん付けで呼ばれる 高...
-
職場の異性と遊んだ事が知られ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SNSなどで使われる、n回目とは...
-
仕事帰り社内の人と同じ時間に...
-
カカオトークのリンクの貼り付...
-
お暇な時間にお願いします!笑 ...
-
職場で噂される男女とされない...
-
5ちゃんねるで、この間から書き...
-
誘いは難しい
-
中学生でも薬局でTENGAって買え...
-
職場で顔も見たくない声も聞き...
-
「○○するのが吉」について
-
http://itest.5ch.net/......12...
-
メールソフト サンダーバード...
-
Outlook 2010の無視という機能...
-
自分から話しかけない人ってそ...
-
知らない人が自分を知っている?
-
5ch
-
新卒女性です。男性の先輩から...
-
2ちゃんねる使用料金の真偽
-
「あくまで」「あくまでも」の意味
-
WordのデータをCD-Rに書き込む...
おすすめ情報