起動引数の展開
ふつうのLinuxプログラミング第1部読み終わりました。ついでに作ったプログラムをハックして遊んでます。
第1部はLinux入門という形で殆どプログラムらしきモノは出てきませんでしたが、わかりやすく丁寧な解説がステキです。
Linuxを構成する3つの要素は、
- ファイルシステム
- プロセス
- ストリーム
メモメモ。
で、驚いた奴。
args.c
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i; printf("argc:%d\n", argc); for (i=0; i < argc; i++) printf("argv[%d]:%s\n",i,argv[i]); exit(0); }
なんてことはないただのargc,argvの引数の展開プログラムですが・・・
$ make args $ ./args /bin/* argc:106 argv[0]:./args argv[1]:/bin/alsacard argv[2]:/bin/alsaunmute argv[3]:/bin/arch argv[4]:/bin/awk argv[5]:/bin/basename argv[6]:/bin/bash (略)
シェルが自動的に*を展開してくれるんですねぇ。ありがたや。
ちと、コーディングスタイルについて調べないとなぁ・・・