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