- ベストアンサー
O_CREAT が効かない
my$file='test.dat'; sysopen(FH, $file, O_WRONLY|O_TRUNC|O_CREAT) || die $!; test.datが無い場合は作成されるはずですが作成されません。 サーバーの設定が原因でしょうか。 ご存知の方がいらっしゃいましたらご指摘をお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
use Fcntl してますか? The possible values and flag bits of the MODE parameter are system-dependent; they are available via the standard module "Fcntl". See the documentation of your operating system's "open" to see which values and flag bits are available. You may combine several flags using the "|"-operator. -- ここまで sysopenのドキュメントから You can request that the old constants (FAPPEND, FASYNC, FCREAT, FDEFER, FEXCL, FNDELAY, FNONBLOCK, FSYNC, FTRUNC) be provided for compatibility reasons by using the tag ":Fcompat". For new applications the newer versions of these constants are suggested (O_APPEND, O_ASYNC, O_CREAT, O_DEFER, O_EXCL, O_NDELAY, O_NONBLOCK, O_SYNC, O_TRUNC). -- ここまで Fcntl.pm のドキュメントから。
その他の回答 (1)
- t-sazen
- ベストアンサー率42% (37/87)
ディレクトリのパーミッションはどうなっていますか? 普通であれば、 sysopen(FH, $file, O_WRONLY|O_TRUNC|O_CREAT, 0600) || die $!; で動作すると思うのですが・・・
お礼
use Fcntl 記述忘れでした。 ご回答頂きましてありがとうございました。 当方の単純なミスでお手間を取らせてしまい 誠に申し訳ございませんでした。
お礼
良く確認したらuse Fcntl しておりませんでした! 付け忘れてました。 どうもありがとうございます。 いやはやお恥ずかしい限り。 大変失礼いたしました。
補足
use Fcntl しております。 謎です。。