main 함수의 인자인 argv 배열의 첫번째 항목에는 command line에서 입력된 첫번째 인자, 즉 수행되는 프로그램의 이름이 들어갑니다. ((int main(int argc, char* argv[]) )) 일반적으로 이 argv[0]는 잘 사용하지 않지요. 간혹 usage 출력에 사용되기는 합니다만... 그런데 예전에 Embedded Linux 교육을 받으면서 보니 이 argv[0] 항목을 사용한 BusyBox 라는 재밌는 프로젝트가 있더군요. Embedded 시스템들은 일반 시스템들보다 컴퓨팅 파워나 메모리 용량, 디스크 크기(플래시 메모리)에 있어서 제약이 많습니다. 그리고 하나의 a.out에는 그 프로그램이 실행해야 할 내용외에도 수 kb의 내용이 오버헤드로 포함됩니다. 이 오버헤드를 줄이게 되면 좀 더 작은 디스크나 플래시 메모리를 사용할 수 있게 되죠. 이 오버헤드를 줄이기 위해서 하나의 a.out에 다양한 프로그램의 기능을 집어넣은 것이 BusyBox입니다. 이렇게 만들어진 busybox라는 a.out은 다양한 이름으로 link가 됩니다. 제가 교육받으면서 만들었던 시스템의 /usr/bin 디렉토리에서 ls -l 한 결과를 예로 보면 다음과 같습니다. lrwxrwxrwx 1 507 507 17 Mar 28 2007 [ -> ../../bin/busybox lrwxrwxrwx 1 507 507 17 Mar 28 2007 ar -> ../../bin/busybox lrwxrwxrwx 1 507 507 17 Mar 28 2007 awk -> ../../bin/busybox lrwxrwxrwx 1 507 507 17 Mar 28 2007 basename -> ../../bin/busybox lrwxrwxrwx 1 507 507 17 Mar 28 200...