On Mon, Oct 23, 2023 at 10:45:44PM +0200, Thomas Schmitt wrote:
> Greg Wooledge wrote:
> > This is what's causing the loop to iterate more times than it should,
> > and to re-process input.
> 
> That's not what i see in my experiments.
> I see stuttering output which first repeats the lines put out so far
> before it adds a new line.
> The getline() loop iterates as often as there are input lines.

Here's what I'm seeing.  First, with a tiny two-line input file, I
see three loop iterations:

unicorn:~$ cat 12
1
2
unicorn:~$ ./foo < 12
1
num_read: 2 at line 1
2
num_read: 2 at line 2
2
num_read: 2 at line 3
unicorn:~$ 

That's the case where I used strace and saw the lseek() in the first
child process (but not in any later child processes, which was even
*more* confusing).

Next, with a larger three-line input file:

unicorn:~$ cat bar
This is one line of a text file containing many lines of text.
This is one line of a text file containing many lines of text.
This is one line of a text file containing many lines of text.
unicorn:~$ ./foo < bar
This is one line of a text file containing many lines of text.
num_read: 63 at line 1
This is one line of a text file containing many lines of text.
num_read: 63 at line 2
This is one line of a text file containing many lines of text.
num_read: 63 at line 3
This is one line of a text file containing many lines of text.
num_read: 63 at line 4
This is one line of a text file containing many lines of text.
num_read: 63 at line 5
This is one line of a text file containing many lines of text.
num_read: 63 at line 6
This is one line of a text file containing many lines of text.
num_read: 63 at line 7
This is one line of a text file containing many lines of text.
num_read: 63 at line 8
[...]
This is one line of a text file containing many lines of text.
num_read: 63 at line 413
This is one line of a text file containing many lines of text.
num_read: 63 at line 414
^C
unicorn:~$ 

I am fairly sure this would repeat indefinitely.  I didn't let it go
more than a few seconds, though.

My system: Debian 12, Linux 6.1.0-13-amd64, gcc (Debian 12.2.0-14) 12.2.0,
libc6:amd64 2.36-9+deb12u3.

Reply via email to