Linux 쉘 명령어 관련 질문(시스템)
글쓴이: kjk850 / 작성시간: 화, 2008/05/06 - 2:10오후
Shell 프로그램을 만들어서 토큰을 구분한다음에 시스템 명령을 호출하는 구문관련입니다.
if(!strcmp(args[0], "quit")) break;
예적으로 위의 구문은 shell 프로그램 빠져나오는 문장이고.
어렵다고 느끼는게 cp 명령어 입니다.
cp file1 file2 를 처리하고 싶어서
for문으로 systme(args[i]);
식으로 시스템 명령을 주고 나니 각각의 토큰을 시스템 명령어화 하여서 처리를 하는 오류를 뱉어내더라고요
예)system(args[0]), system(args[1]), ....(제가 원하는건 system(args[0]), file1, file2)
cp 라던가 man 같은 시스템 명령어 처리를 위해서 첫번째 토큰(args[0])만 시스템 명령어로 주고
두번째 토큰부터 (args[1]~) 파일명령어로 처리를 할수있는 방법이 없을까요?
그리고
if((!strcmp(args[0],"copy")) && (args[1]) && (args[2])) system("cp args[1] args[2]");
문장도 문제를 나타내던데 이유를 아시는분 답글좀 부탁드립니다.
Forums:
Re:
C언어에 미숙하신 것 같습니다.
조금만 생각해보면 system("cp args[1] args[2]"); 가 어째서 의도한대로 동작하지 않는지 알 수 있을텐데 말이죠.
그리고 일반적으로 Shell 프로그램을 만드는 경우에,
system() 함수 대신에 fork() -> exec() 방법을 많이 사용합니다.
여러가지 이유가 있지만 가장 쉽게 와닫는 이유를 이야기한다면 job control 기능 때문이죠.
댓글 달기