2012-02-20 2 views
2

more 명령을 사용하는 것이 일반적입니다. 더 많은 것은 보통 파이프와 함께 사용됩니다. 그래서 나는 stdin에서 읽을 수있는 능력이 더 있다고 생각합니다. 파이프로 구분 된 모든 명령은 프로세스이며, 이전에는 파이프를 작성하고 dup2는 더 많은 stdin에 대한 쓰기 파이프를 작성합니다. 하지만 콘솔에 "more"를 입력하면 몇 가지 사용법이 나타납니다. 그래서 뭐가 문제 야?stdin에서 더 많은 명령을 내릴 수 있습니까?

답변

2

왜 잘못 생각하나요? 더 많은 페이지가 터미널에 출력되므로 충분한 표준 입력을 기다리는 것이 무엇입니까?

more과 하나 이상의 파일 이름을 입력하면 해당 입력을 페이지합니다. 그래서 행동이 같은 것입니다 : 가치가 무엇인지에 대한

am I attached to a terminal? ("isatty") 
    are there filenames in argv 
     page files 
    else 
     display help 
else 
    page pipe input 
2

이것은 기능입니다. 표준 입력이 터미널에 연결되어 있음을 감지하고 계속 진행하지 않고 도움말 메시지를 표시합니다. 호출을 수동으로 입력하는 동안 호출기를 입력에 대해 실행하는 것이 의미있는 상황은 거의 없습니다. 정말로 실제로 원한다면 예를 들어 cat | more을 시도하십시오.

2

, 나는 내 리눅스 배포판의 저장소에 의해 제공되는 소스 패키지를 보았다이 발견

if (!no_intty && nfiles == 0) { 
usage(argv[0]); 
exit(1); 
} 

그래서 실제로 동작을 표시하는 것입니다 입력이 검출되지 않는 경우의 사용법 메세지

관련 문제