dma(8): Fix race condition in multi-recipient delivery
Simon 'corecode' Schubert
corecode at fs.ei.tum.de
Fri Jul 10 01:50:47 PDT 2009
Matthew Dillon wrote:
dup() doesn't solve the problem. A dup()'d descriptor still
points to a common file pointer and thus a common seek position.
Only open() will generate a new file pointer backing the file
descriptor.
That's not true.
cheers
simon
--
<3 the future +++ RENT this banner advert +++ ASCII Ribbon /"\
rock the past +++ space for low CHF NOW!1 +++ Campaign \ /
Party Enjoy Relax | http://dragonflybsd.org Against HTML \
Dude 2c 2 the max ! http://golden-apple.biz Mail + News / \
#include <stdio.h>
int
main(void)
{
FILE *f = fopen("duptmp", "w");
FILE *f1, *f2;
char line[100];
if (f == NULL)
return (1);
fputs("1\n2\n3\n", f);
fclose(f);
f1 = fopen("duptmp", "r");
if (f1 == NULL)
return (1);
f2 = fdopen(dup(fileno(f1)), "r");
if (f2 == NULL)
return (2);
fgets(line, sizeof(line), f1);
printf("read1: %s", line);
fgets(line, sizeof(line), f2);
printf("read2: %s", line);
return (0);
}
More information about the Submit
mailing list