10. marts 2004 - 18:39Der er
1 kommentar og 1 løsning
Hjælp til forståelse af pipe's error-handlings kode
Jeg søger en forklaring af pipe's error handlings kode:
int sys_pipe(unsigned long * fildes) { int fd[2]; int error;
error = do_pipe(fd); if (!error) { if (copy_to_user(fildes, fd, sizeof(fd))) error = -EFAULT; } return error; }
Jeg kan forstå at den melder fejl hvis der forsøges at tilgå adgang til forbudt memory-område, men jeg forstår ikke hvordan denne kode sikre det. Det er især variablen fd[2] jeg ikke forstår funktionen af.
Er det noget kode fra linux kernen? Efter kaldet til do_pipe, er fd[0] en read-only file descriptor og fd[1] er write-only. Så vidt jeg kan se, kan der kun komme en fejl hvis fildes er ugyldig eller hvis processen har opbrugt sin kvota af file descriptors (dette sker næsten aldrig).
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.