起動引数の展開

ふつうの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
(略)

シェルが自動的に*を展開してくれるんですねぇ。ありがたや。

ちと、コーディングスタイルについて調べないとなぁ・・・