$ rm -rf temp_testdir $ mkdir temp_testdir $ cd temp_testdir < #include < #include < #include < #include < #include < #include < < #ifdef __MINGW32__ < #define sleep _sleep < #endif < < int main() { < char buff[2048]; < char* p; < int got; < int in; < int w; < int tgot = 0; < < sleep(1); < < if((in = open("tmp_fich",O_RDONLY|O_CREAT)) == -1){ < perror("Cannot open tmp_fich"); < exit(1); < } < < while (1) { < if((got = read(in,&buff,2048)) == -1) < perror("Error while reading"); < else if(got == 0 && tgot != 0) < break; /* EOF */ < < if(!got) < continue; < < p = buff; < < tgot += got; < < while(got) { < if((w = write(1, p , got)) < 0) { < perror("Error while writing"); < exit(1); < } < < p += w; < got -= w; < } < } < < return 0; < } $ cat > delayed_cat.c $ gcc -Wall -o delayed_cat delayed_cat.c & ./delayed_cat > TOTO < TOTO $ cat > tmp_fich $ sleep 2 $ cd .. $ rm -rf temp_testdir