>>> It is possible for write() calls to fail partway through, after
>>> already having written some data.
>> The rightest thing to do, it seems to me, would be to return the
>> error indication along with how much was successfully written (or
>> read).  But that, of course, requires a completely new API, [...]
> I think it could be done with a signal in combination with the
> existing API.

It could!  Thank you for thinking of that; I evidently wasn't thinking
creatively enough.  Yes.  A new signal, which is generated when an I/O
operation errors after partial completion (and returning the amount of
I/O done).  I'm spinning an off-the-cuff design here: maybe, if the
signal is set to SIG_DFL, the error sticks around and is returned next
call, but if the signal is SIG_IGN or caught, not (like SIGCHLD,
SIG_IGN and SIG_DFL have different semantics even though the signal is
ignored by default).

That cound be retrofit relatively easily.

Not sure I like the price of a signal delivery just to get the error
status; an alternative I/O API could also exist.  Programs for which
the additional cost is acceptable could use the signal; those whose
tradeoffs go the other way could use the API....

/~\ The ASCII                             Mouse
\ / Ribbon Campaign
 X  Against HTML                mo...@rodents-montreal.org
/ \ Email!           7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B

Reply via email to