
いつもお世話になっています。
OS:Redhat Linux5.2
Perl:5.8.8
perlのreadlinkを使用すると返り値にゴミが付与された状態になり困っています。
状況としては、mysqlのバージョンアップ(rpmにて)を実施しました。
その後、prelinkを起動し、readlinkにて返り値を確認するとゴミ文字が付与されてしまいます。
# ps aux | grep mysql | grep -v root
mysql 9279 0.0 0.3 117688 12664 ? Sl Aug24 0:00 /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --pid-file=/var/lib/mysql/hostname.pid --skip-external-locking
#
# cat test.pl
#!/usr/bin/perl
$i = readlink('/proc/9279/exe') ;
print ("$i\n") ;
#
# ./test.pl
/usr/sbin/mysqld4a924ea5I ;deleted)
#
Webで調べると以下のページでreadlinkにゴミ文字が付与されて困っている同様のやり取りをしているようですが、読み解けずこちらで質問をさせていただきます。
http://www.xray.mpe.mpg.de/mailing-lists/perl5-p …
【質問1】
何故、readlinkは返り値にゴミ文字を付与してしまうのでしょうか?
【質問2】
私が確認したのは、prelink実行後なのですが、何故prelinkを実行するとreadlinkの不具合を併発するのでしょうか?
【質問3】
質問1とかぶってしまうかも知れませんが、試しにbindのバージョンアップを実施してprelinkを起動させましたが、同様の事象(readlinkの返り値にゴミが混ざる)になりませんでした。
この理由が知りたいです。
ちなみに、mysqlもbindも/usr/sbin上で起動しています。
★参考
# cat /etc/prelink.conf
# This config file contains a list of directories both with binaries
# and libraries prelink should consider by default.
# If a directory name is prefixed with `-l ', the directory hierarchy
# will be walked as long as filesystem boundaries are not crossed.
# If a directory name is prefixed with `-h ', symbolic links in a
# directory hierarchy are followed.
# Directories or files with `-b ' prefix will be blacklisted.
-b *.la
-b *.png
-b *.py
-b *.pl
-b *.pm
-b *.sh
-b *.xml
-b *.xslt
-b *.a
-b *.js
-b /lib/modules
-b /usr/lib/locale
-b /usr/X11R6/lib{,64}/X11/xfig
-b /usr/lib{,64}/libfreebl3.so
-b /usr/lib{,64}/libsoftokn3.so
-l /bin
-l /usr/bin
-l /sbin
-l /usr/sbin
-l /usr/X11R6/bin
-l /usr/kerberos/bin
-l /usr/games
-l /usr/libexec
-l /var/ftp/bin
-l /lib{,64}
-l /usr/lib{,64}
-l /usr/X11R6/lib{,64}
-l /usr/kerberos/lib{,64}
-l /usr/X11R6/LessTif
-l /var/ftp/lib{,64}
#
質問1,2,3のうち何でも結構です。
皆様の知恵をお貸し下さい。
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
挙げられた URL を読むと、perl の readlink は C の readlink 相等の
ものなので、不具合ではなく仕様どおりではないかという流れです。
C の readlink だと有効な長さも返されるのでどこまでが、有効な文字列
かわかるのですが、perl の readlink では長さは返ってこないようです
ね。
まぁ、perl の readlink はこういう風になっているので、それに対応した
使い方をしようということのようですね。
対策は、有効な文字列の終わりを示す NULL("\0")文字以降を削除
してしまえばよいです。
$i = readlink ( ... );
$i =~ s/\0.*//;
で、よいと思います。
t-okuraさん
ご回答ありがとうございます。
確かに運用の中で対処していけばいいんですよね。
readlinkに関しては検討しようと思います。
今回、prelinkを実行するとゴミ文字がついてしまうので
prelinkのバグ(?)とも考えているんですが、何故prelinkを実行すると
ゴミ文字がつくかは未だに謎です・・・
ただ、prelinkに関してはこれ以上回答がなさそうなので
締め切ろうと思います。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- UNIX・Linux postfix smtpサーバーリレーがTLSハンドシェーク失敗 1 2022/08/15 15:45
- その他(プログラミング・Web制作) python 2 2022/12/23 09:06
- Ruby Ruby / passenger のインストールについて 1 2023/01/30 18:31
- UNIX・Linux AWSのEC2のZabbixユーザーでawscliコマンドが実行できない状態を解決する 1 2022/12/06 22:17
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- MySQL Mac です。ローカルホストの phpMyAdmin にアクセスできません。 1 2023/06/06 17:14
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- PostgreSQL PostgreSQL14.6のSSL対応について 1 2023/01/05 15:42
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
cygwinでinetdをサービスに登録...
-
Postfixでmailコマンドを使用し...
-
ld.so.confとLD_LIBRARY_PATH
-
DebianのApache(掲示板)CGIエ...
-
.cshrcでのエラー
-
ソフトのインストール場所って...
-
バッチファイルで多重起動を防ぐ
-
誰かにサーバにあるデータを消...
-
バッチファイル内置換
-
CSHが使えない REDHAT
-
デバッグ停止中 一つ戻る
-
Linux環境変数設定(putenv?se...
-
ubuntuに外部侵入できるか
-
Macの手書き漢字入力ツールにつ...
-
illustratorを日本語仕様にする...
-
VB6 二重起動確実防止について
-
batファイル 行った履歴をテキ...
-
Basp21を使用してメール送信が...
-
sccs
-
VBAのRegExpで後方一致/不一致...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイルでのスペースの入力
-
Postfixでmailコマンドを使用し...
-
.cshrcでのエラー
-
".bashrc" E509: バックアップ...
-
cygwinでno such file or direc...
-
proftpdをアンインストールしたい
-
共有ライブラリが見つからない
-
「/usr/bin/ld」の問題について...
-
linuxのフォルダと配置について
-
Solarisでプロンプトの変更方法
-
CentOS X Window Systemエラー
-
gccでx11コンパイル
-
perl readlink 返り値にゴミ文...
-
ld.so.confとLD_LIBRARY_PATH
-
DebianのApache(掲示板)CGIエ...
-
C標準ライブラリ場所
-
cygwinでinetdをサービスに登録...
-
/usrがいっぱいになって。mount...
-
Apace2のインストールでエラー
-
Sendmailにパッチを当てたら大...
おすすめ情報