Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
char ch; while((ch=getc(stdin))!=EOF) { putc(ch,stdout); }
众所周知,EOF 字符可以通过ctrl-z.
ctrl-z
我运行了两次程序:-
1-当我输入ctrl-z时,循环被终止,这是可以接受的。
2-当我输入ctrl-z一些其他文本(如demo然后按ctrl-z)时,循环不会终止。
demo
所以我的问题是为什么循环仅通过ctrl-z单独输入来终止?
EOF不是可以放入流中的字符。它是一个元控制字符,可以通过返回getc,但不能写入。ctrl-z技术上不发送EOF,它发送SIGTSTP到进程并被getc编程为通过返回来响应它EOF。
EOF
getc
SIGTSTP