execl("/bin/ls","ls",">>","ls.txt",(char*)0);
이런 표현은
/bin/ls 라는 프로그램의 이름은 'ls'는 우리가 main에서 argv로
인자를 얻어올때 argv[0]와 같이 해당 프로그램의 이름에 해당합니다.
두번째부터도 마찬가지로 ls에 인자로 인식하게 됩니다.
즉 위와 같이 사용했을 경우 shell은,
ls에 첫번째 인자가 'ls' 즉 이름이고 두번째는 '>>' 라는 파일과
'ls.txt'라는 파일에 대해 출력하라고 인식합니다.
윗분 말씀대로 리다이렉션을 사용하려면 system이나 popen을 이용하셔야 합니다.
>> 는 쉘에서
>> 는 쉘에서 작동하는 리다이렉션이니까 exec 계열의 함수로는 사용할 수 없겠지요.
가장 쉽게 하자면 system("ls >> ls.txt"); 가 되겠지만 원하시는 방법인지는 모르겠네요.
exec 계열 함수의 첫번째인자 이후는 해당 프로그램의 파라미터 입니다.
execl("/bin/ls","ls",">>","ls.txt",(char*)0);
이런 표현은
/bin/ls 라는 프로그램의 이름은 'ls'는 우리가 main에서 argv로
인자를 얻어올때 argv[0]와 같이 해당 프로그램의 이름에 해당합니다.
두번째부터도 마찬가지로 ls에 인자로 인식하게 됩니다.
즉 위와 같이 사용했을 경우 shell은,
ls에 첫번째 인자가 'ls' 즉 이름이고 두번째는 '>>' 라는 파일과
'ls.txt'라는 파일에 대해 출력하라고 인식합니다.
윗분 말씀대로 리다이렉션을 사용하려면 system이나 popen을 이용하셔야 합니다.
-------------
포탈이는 불사신
-------------
포탈이는 불사신
댓글 달기