This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author neologix
Recipients neologix, pitrou, vstinner
Date 2011-05-27.16:34:41
SpamBayes Score 1.1846376e-09
Marked as misclassified No
Message-id <BANLkTimbcFdQg4HqxanJbxBLBmFDgj=BYg@mail.gmail.com>
In-reply-to <1306512145.22.0.117115529403.issue12196@psf.upfronthosting.co.za>
Content
> +# A constant likely larger than the underlying OS pipe buffer size.
> +# Windows limit seems to be around 512B, and most Unix kernels have a 64K pipe
> +# buffer size: take 1MB to be sure.
> +PIPE_MAX_SIZE = 1024 * 1024
>
> Hum, I am not sure that the comment is correct. If I understood correctly the usage of this constant: write PIPE_MAX_SIZE into a blocking pipe must block because PIPE_MAX_SIZE is greater than the size of the pipe buffer.

Correct.

> I don't know what happen if you write PIPE_MAX_SIZE into a nonblocking pipe: the beginning of the buffer is written and write() returns something lesser than PIPE_MAX_SIZE?
>

Correct. Note that it could also fail with EAGAIN, that's why I added
an except OSError clause to the write.

> You may specify that if you should greater or equal to os.fpathconf(fd, "PC_PIPE_BUF").
>

I don't understand what you mean. It will be greater than PIPE_BUF,
which is around 4096 (I think 512 guaranteed by POSIX).

> Here you use PIPE_MAX_SIZE*3, not PIPE_MAX_SIZE :-) You can use b'abc' * (support.PIPE_MAX_SIZE // 3), or b'a' * support.PIPE_MAX_SIZE.
>

I know, but that's what the original code did, so I kept it.
History
Date User Action Args
2011-05-27 16:34:42neologixsetrecipients: + neologix, pitrou, vstinner
2011-05-27 16:34:42neologixlinkissue12196 messages
2011-05-27 16:34:41neologixcreate