人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Linuxのコマンドでの質問です。
http://q.hatena.ne.jp/1272351283 の質問と被りますがcp、mv、installコマンドでは特に指定がなければ上書きされるようですが、
上書き先のモジュールなどが使用中の場合でも上書きされるのでしょうか?
Windowsなどでは使用中のファイルは削除出来なかったりということがありますが、Linuxにおいて上書き先のファイルが使用中である場合の挙動を教えて下さい。

●質問者: quocard
●カテゴリ:コンピュータ インターネット
✍キーワード:CP Linux MV Windows コマンド
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● JULY
●50ポイント

上書きされません。

ごとむにっき

上記ページが分かりやすいと思いますが、open というシステムコール(Windows での WinAPI のようなもの)が ETXTBSY というエラーが発生します。

英語環境だと「Text file busy」、日本語だと「テキストファイルがビジー状態です」と言われますが、いわゆる「テキストファイル」でなくても、このメッセージになります。

その理由は...、う?ん、なぜだろう? ネイティブなバイナリプログラムで、メモリにロードされた状態で CPU が実行するコードが入っている部分を UNIX では「Text セグメント」と言うのと関連があるのかもしれません。

◎質問者からの返答

なるほど。

そうなると対象ファイルがビジー状態を判断するか、ETXTBSYのチェックを落とさないと書き換えが出来ないわけですね。

ETXTBSYのチェックの落とし方はちょっと検索した程度はわかりませんでした。

PHPでファイルの書き換えを行っているのでこの辺になるとちょっと技量が追いつかないようです。


2 ● t-wata
●50ポイント

http://q.hatena.ne.jp

基本的には、全部上書き可能だと思ってもらって問題ないです。上書きガードかかかるのは非常に特殊な場合のみです。

JULYさんの言う上書き制限は、実行中の実行ファイル(シェルスクリプトの場合、sebangに指定された実行ファイル)のみです。

つまり、デフォルトの状態なら、/usr/binとか/bin以下にあるもの以外は上書きできる、ってことです。

また、この場合できないのは、ファイルを開いて別の内容に書き換える、という方法で、

ファイルの削除(unlink)やリネームに関しては実行中でも問題なくできます。

つまり、mvのように削除して同名ファイルを作るという方法なら、いつでも上書きできます。

◎質問者からの返答

ありがとうございます。

こちらで作成したtest.cやtest.phpに対して行うのでガードはかかってなさそうですね。

sebangでの指定がどこでおこなわれているのかはちょっと検索しきれませんでしたが、そういったことでしたら大丈夫そうです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ