1 #include <cstdio> 2 #include <string> 3 #include <unistd.h> 4 getline()5std::string getline() { 6 std::string result; 7 while (true) { 8 int r; 9 char c; 10 do 11 r = read(fileno(stdin), &c, 1); 12 while (r == -1 && errno == EINTR); 13 if (r <= 0 || c == '\n') 14 return result; 15 result += c; 16 } 17 } 18 input_copy_loop()19void input_copy_loop() { 20 std::string str; 21 while (str = getline(), !str.empty()) 22 printf("read: %s\n", str.c_str()); 23 } 24 main()25int main() { 26 input_copy_loop(); 27 return 0; 28 } 29