C로 자체 셸을 작성하고 있습니다. 매우 간단하지만 세 가지 명령을 추가로 구현하고 싶습니다. 첫 번째는 인수가 있거나없는 명령으로 출력이 파일로 리디렉션됩니다. 두 번째는 인수가 있거나없는 명령으로 파일에 출력이 추가됩니다. 마지막으로 인수가 있거나없는 명령으로 파일에서 입력이 리디렉션됩니다.사용자 지정 셸에서 입력/출력 파일 리디렉션을위한 명령 쓰기
이러한 명령은 모두 시스템 호출 freopen()
, dup()
및 dup2()
을 사용하여 구현할 수 있습니다.
첫 번째 명령의 예는 ls -l > fileName.txt
일 수 있습니다. 이 명령의 출력을 받아서 fileName.txt
에 넣어야합니다.
두 번째 명령의 예는 ls -l >> fileName.txt
일 수 있습니다. 이 명령의 출력을 받아야 파일 fileName.txt
에있는 모든 항목에 추가해야합니다.
마지막 명령의 예는 bc < file
일 수 있습니다. 이것은 명령의 출력을 가져 와서 명명 된 파일에 넣습니다.
이것은 구현하기가 너무 어렵지는 않지만 어떤 이유로 나는 그것을 수행하는 방법을 모르고 심각한 문제가 있습니다. 누군가 나를 도울 수 있었습니까?
"<" ">"은 실행 파일의 stdin 표준 출력을 리디렉션합니다. filename에 대한 인수를 구문 분석하고, 표준 입력/표준 출력을 파일에서 /로 리디렉션하십시오. 당신은 심판을 사용할 수 있습니다 http://stackoverflow.com/questions/584868/rerouting-stdin-and-stdout-from-c..also >> 첨부 파일을 열 수 있습니다 (모드에서 +) ref http를 엽니 다 : //man7.org/linux/manage-man3/fopen.3.html –