[解決済み] "デバイスに不適切なioctl"
質問
AIXマシンでPerlスクリプトを走らせています。
このスクリプトは、あるディレクトリからファイルを開こうとして、ファイルに読み取り権限がないため、ファイルの読み取りに失敗しますが、別のエラーメッセージが表示されます。
inappropriate ioctl for device
.
次のように表示すべきではありませんでしょうか。
no read permissions for file
というようなことでしょうか?
この
inappropriate ioctl for device
のメッセージはどういう意味ですか?
どうすれば直せますか?
EDIT:したらこうなりました。
strace
.
open("/local/logs/xxx/xxxxServer.log", O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE.O_WRONLY|O_CREAT|O_CREAT|O_APPEND|O_LARGEFILE.O_WRONLY|O_WRONLY), 0666) = 4 _llseek(4, 0, [77146], SEEK_END) = 0 ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbffc14f8) = -1 ENOTTY (デバイスに不適切なioctl)
解決方法は?
ほとんどの場合、開いている 失敗していない .
Perl がファイルを開くとき、ファイルが TTY かどうかをチェックします。
-T $fh
filetest 演算子) を発行しています。
TCGETS
ioctlを使用します。ファイルが tty ではなく通常のファイルである場合、ioctl は失敗し、errno に
ENOTTY
(文字列値: "Inappropriate ioctl for device")です。ysth が言うように、予期しない値を示す最も一般的な理由は
$!
は、それが有効でないときにチェックされます。
その他
そのため、操作の結果コードをテストすることは非常に重要です。
もし
open
が実際に false を返した場合、あなたが見つけたのは
ENOTTY
で
$!
という無駄な値を与えてしまうこと)、これは小さなバグだと考えています。
$!
しかし、どうしてこのようなことが起こったのか、非常に興味があります。コードやトラス出力があると助かります。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Perl学習ノート - CPANの使い方入門
-
Perl5 のコードを Perl6 に移行するためのソリューション
-
[解決済み】stdinがターミナルではないため、擬似ターミナルが割り当てられない
-
Windowsにperlとkomodo IDEをインストールする詳細な手順
-
日付と時刻を操作するためのPerlのCPANモジュール10個の紹介
-
Perl オブジェクト指向の例
-
Perlによるディレクトリの探索とLinuxコマンドによるログの解析 コード例共有
-
perlにおけるmyとourの違いの解析
-
Perlのファイルハンドルの説明
-
File::Basename を使用してファイル拡張子を取得する Perl コード