「プロセスが使用中のファイルを調べる」で遊んでみた
ふと、何か(何)を見ていて、その関連で以下の記事をざっと読んで、ちょっと遊んでみたメモ(謎)。
なんで「PHP」というタグまで付いているかは読めば分かる(ぇ‥
本題
単にやってみたかっただけなので、PHPで以下のプログラムを書いてみた。
<?php $fp1 = fopen(__FILE__, "r"); exec('lsof ' . __FILE__, $a1); print_r($a1); $fp2 = fopen(__FILE__, "a"); exec('lsof ' . __FILE__, $a2); print_r($a2); fclose($fp1); fclose($fp2);
単に、PHPスクリプトファイル自身をfopenして、lsofを実行して‥というのを「"r"」「"a"」の2つのオープンモードで次々に開いて試しているだけ。(「"w"」モードで開いたらスクリプトファイルの内容が消えちゃうからね(謎))
$ php hoge.php Array ( [0] => COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME [1] => php 3616 hhelibex 3r REG 253,0 185 163270 /home/hhelibex/work/2015-0602-01/hoge.php ) Array ( [0] => COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME [1] => php 3616 hhelibex 3r REG 253,0 185 163270 /home/hhelibex/work/2015-0602-01/hoge.php [2] => php 3616 hhelibex 4r REG 253,0 185 163270 /home/hhelibex/work/2015-0602-01/hoge.php ) $
できたできた。それだけ(謎)。
蛇足
別のUbuntu 14.04 LTS環境では、何もしなくてもlsofコマンドが使えた。
その環境で必要なパッケージ等は入れているので、初期状態(minimal)で使えるかどうかは分からないが(ぇ‥