パスワードを忘れた? アカウント作成
745473 journal

BAKの日記: プログラム起動のシステムコール

日記 by BAK

ぐはっ. エンバグしてしまいました. 全くをもってその通りでございまする.

ま,argsdisp プログラムはこのぐらいにしておいて(といってごまかす),プログラム引数が出てきたので,この引数について掘り下げてみる.

システムコールとは,プログラムからカーネルに対して,仕事をお願いすること,である. システムコールは,C の関数の形でプログラムに埋め込まれる.

で,プログラムを起動するシステムコールであるが,execve というもので,Linux では以下の形で定義されている.

int execve (const char *filename, char *const argv [], char *const envp[]);

プログラムを起動するプログラム(シェルなど)は,

  • filename にプログラムのファイル名(へのポインタ)
  • argv[] にプログラム引数
  • envp[] に継承する環境変数

をセットして execve をコールする.

すると,指定されたプログラムが起動される. 起動された側のプログラムでは,

int main ( int argc, char *argv[], char *envp[] )

という形の main 関数へと制御が移る. argv[] と,envp[] は,execve で指定されたものが参照される.

typodupeerror

ソースを見ろ -- ある4桁UID

読み込み中...