| #include <cstdio> | |
| #include <string> | |
| #include <unistd.h> | |
| std::string getline() { | |
| std::string result; | |
| while (true) { | |
| int r; | |
| char c; | |
| do | |
| r = read(fileno(stdin), &c, 1); | |
| while (r == -1 && errno == EINTR); | |
| if (r <= 0 || c == '\n') | |
| return result; | |
| result += c; | |
| } | |
| } | |
| void input_copy_loop() { | |
| std::string str; | |
| while (str = getline(), !str.empty()) | |
| printf("read: %s\n", str.c_str()); | |
| } | |
| int main() { | |
| input_copy_loop(); | |
| return 0; | |
| } |