이상한 제어 행동 누르면 D다음과 같이 보입니다. $

cat를 수행하여 매우 간단한 텍스트 편집기로 사용할 수 있습니다 cat > foo.txt.
그런 다음 다음을 입력하십시오.

bar
baz

ctrl+ 를 누르면 D다음과 같이 보입니다.

$ cat > foo.txt
bar
baz^D

에 커서를 놓습니다 ^. 그런 다음 한 번 더 누르면 파일이 저장됩니다. 그러나 아무것도 (아마도 아무것도 아니지만 대부분) 다른 것을 누르면 파일을 계속 편집합니다.

이것이 정상적인 행동입니까?



답변

예. 그것은 ^D실제로 와 관련 이 있습니다 : 그것은 단지 현재 read(2)통화를 중단합니다 .

프로그램이 작동 int rdbytes = read(fd, buffer, sizeof buffer);하고 그 ^D사이 를 누르면 read()버퍼에서 현재 읽은 바이트와 함께 숫자를 반환합니다. 라인 종료에서도 마찬가지입니다. \n끝은 항상 전달된다.

따라서 ^D줄의 시작 부분이나 그다음에 a 만 리턴 ^D하여 원하는 효과를 가지며 EOF를 신호합니다.read()0


답변

예, 이것은 정상적인 행동입니다. 단일 Control-D는 일반적으로 줄의 시작 부분 인 경우에만 발생합니다. 이것은 하나의 Control-D로 종료됩니다.

$ cat > foo.txt
bar
baz
^D


답변