perl readlink 返り値にゴミ文字が・・・
いつもお世話になっています。
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-porters/2008-05/msg00398.html
【質問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のうち何でも結構です。
皆様の知恵をお貸し下さい。
宜しくお願いします。
お礼
parapara777、お礼が遅くなり申し訳ございません。 ファイルを確認できました。 アドバイスありがとうございまいた。