I-8-7. コマンドラインオプションと環境変数のプログラムへの渡し方

シェルからプログラムへパラメータを渡す方法として、コマンドライン引数による方法と環境変数を用いる方法を説明する。渡されたパラメータをC言語プログラム内部で処理する方法やプログラムからの返り値の取扱いについて解説し、代表的な環境変数についても説明する。

【学習の要点】

* プログラムは起動時に指定されたパラメータの値により、その振る舞いが決定される。

* パラメータは、コマンドライン引数としても指定することが可能である。

* またパラメータは、環境変数として指定することも可能である。

図I-8-7. プログラムへのパラメータ

【解説】

1) プログラムへのパラメータ

プログラムは起動時に指定されたパラメータの値により、その振る舞いが決定される。個々のプログラムに対してパラメータを指定するには、以下の方法がある。

* コマンドライン引数として指定する。

コマンドライン引数として与えられた文字列は、空白を区切り文字として複数の文字列に分けられ、指定された引数の数とそれぞれの文字列へのポインタが、プログラムに与えられる。

* 環境変数として指定する。

事前に、パラメータ値を環境変数に設定しておけば、以下の関数で参照が可能となる。

- printenvコマンド : 環境変数の表示を行う。

- setコマンド : 環境変数を設定する。

- getenv取得関数 : 環境変数を検索し、この変数の示す値を返す。

- setenv設定関数 : 環境変数を作成する。

- putenv変更関数 : 環境変数の値を更新する。

- unsetenv削除関数 : 指定した環境変数を削除する。

2) C言語プログラムにおけるパラメータ処理

C言語で記述されたmain関数に対してもパラメータの指定が可能であり、これらはmain関数の引数として参照することが可能である。

* コマンドライン引数の処理方法

main関数への引数を受け取るためには、以下のように指定すればよい。

- main( int argc, char *argv[] ) {

argcがパラメータの個数を示し、argvに指定されたパラメータが順次納められている。

* 環境変数として指定されたパラメータの処理方法

getenv関数を用いて環境変数の示す値を受け取るには、getenv関数への引数として環境変数の名称を指定する。戻り値は該当する変数の持つ値へのポインタとなる。

* 各関数からの戻り値

各関数からは、必ず何らかの戻り値が存在する。戻り値を参照するには環境変数を以下の方法で参照すればよい。 例) # echo $?

3) 代表的な環境変数

Linuxが使用している代表的な環境変数には、以下に挙げる変数がある。

- USER : 現在の使用者名(ログイン名)が設定されている。

- HOME : 現在の使用者のホームディレクトリ名が設定されている。

- PATH : 使用可能なコマンドが置かれているディレクトリ名が設定されている。

- LANG : 現在使用中の言語が設定されている。

- PWD  : 現在のカレントディレクトリ名が設定されている。

- SHELL : 現在使用中のシェルの名称が設定されている。

- TERM : 標準で使用するターミナルの名称が設定されている。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。

フォーラム会員企業専用

記事配信

コンテンツ配信

ユーザログイン