プロフィール

kosaki

Author:kosaki
連絡先はコチラ

ブログ検索
最近の記事
最近のコメント
最近のトラックバック
リンク
カテゴリー
月別アーカイブ
RSSフィード
FC2ブログランキング

スポンサーサイト このエントリーをはてなブックマークに追加

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


スポンサー広告 | 【--------(--) --:--:--】 | Trackback(-) | Comments(-)

argv[0] を書き換えるとpsコマンドに反映されるか このエントリーをはてなブックマークに追加

higepon氏がBlog上でLinuxでargv[0]を書き換えたらpsコマンドに反映された。と書いていたのだが、まるでそんなアーキになっていない気がして仕方が無かったので、さっくり調査

実験マシンはRHEL4U2 on IA64.


ソースファイル:

main(int argc, char** argv){
argv[0] = "hoge";
while(1)
;
}


はずかしいバグを入れてしまった(コメント参照のこと)
↓こっちを見てね

#include 

main(int argc, char** argv){
strcpy(argv[0], "hoge");
while(1)
;
}


psコマンド出力結果:

$ ps
PID TTY TIME CMD
19260 pts/2 00:00:00 bash
19283 pts/2 00:00:01 a.out
19284 pts/2 00:00:00 ps


とゆーわけで、Linuxではargv0書き換えは意味がない。に一票。
おぼろげな記憶で書くと、もともとargv0書き換えってBSD系とSYSV系で
動作が違ってるから互換性ないよー
とか言われてなかったっけ?昔。

BSD系はPSコマンドがユーザプロセスの領域みてる(ような気がする)
から、BSD向けのコードなんじゃね?

Linuxではexec時にコマンドライン文字列をcurrent->commにstrcpyしちゃってるからargv[0]書き換えは意味無いと思うな。

Linuxでは、psの出力を誤魔化すような書き換えは出来ないんじゃねーかーとか思っておりまする。

だれか反論プリーズ


追記: よく見たら、すっげー古い記事だったので、いまさらコメントしても何の意味もなかったorz
ここはあろはさんが悪いということにしておこう。

関連記事


linux | 【2006-09-14(Thu) 12:10:37】 | Trackback:(0) | Comments:(12)
コメント

Darwinで確認しました。

argv[0] = "hoge";
ではなくて
strcpy( argv[0], "hoge" );
ですね。メモリ壊してもしーらないっと。
2006-09-14 木 01:46:39 | URL | よっふぃ~ #- [ 編集]

ご指摘ありがとうございます m(_ _)m
これはちょっと恥ずかしいですね。

ま、結論に変わりはないわけですが・・・
2006-09-14 木 05:46:33 | URL | kosaki #- [ 編集]

linux は ps の 仕様で BSD style と SYSV style で見え方が違います。 以下を試してみたら?

main(int argc, char *argv[])
{
strcpy(argv[0], "wao");
system("/bin/ps f");
system("/bin/ps ");
exit(0);
}
2006-09-15 金 21:01:41 | URL | alley-cats #- [ 編集]

結論としては、今回のようなコードでは、Linux でも BSD系でも、ps で出力されるプロセス名が変わることはないということなのでしょうか。
FreeBSD 6.1 で試してもプロセス名は変わりませんでした。
2006-09-17 日 01:21:46 | URL | takaBSD #0TKESV/c [ 編集]

linux は ps のオプションによって変って見えたり、見えなかったりするという意味なんだけど。
ps とか ps -ef では変って見えないけど、ps f とか ps ax とかだと変って見えませんか?
2006-09-17 日 06:36:36 | URL | alley-cats #- [ 編集]

alley-catsさん、貴重な情報ありがとうございます。
面白いので、もうちょっと調べてから別のエントリに起こそうと思います。
2006-09-18 月 08:45:55 | URL | kosaki #- [ 編集]

takaBSD さん>
つまり、僕が間違っていました。ごめんなさい。
と、いうことです。
2006-09-18 月 19:36:14 | URL | kosaki #- [ 編集]

Mac OS Xでは変わった。
2006-09-19 火 05:45:02 | URL | anonymous #- [ 編集]

cygwinでは変わらなかったですな。
2006-09-22 金 01:43:45 | URL | anonymous #- [ 編集]

あきらかにカーネルの支援がないと出来ない機能なので、Cygwinではつらそうですのぅ・・
2006-09-22 金 02:00:15 | URL | kosaki #- [ 編集]
このコメントは管理人のみ閲覧できます
2007-09-02 日 09:45:42 | | # [ 編集]
このコメントは管理人のみ閲覧できます
2007-09-02 日 22:45:10 | | # [ 編集]
  1. 無料アクセス解析
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。