18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
* scripts. so far so good.
*
* except unix has two distinctly different concepts of
* IO. there's POSIX IO, and then there's libc IO.
*
* POSIX IO uses the shit in <fcntl.h> and <unistd.h>;
* syscalls like read(2), write(2), and pipe(2) - the
* good, simple shit God made unix for. this is really
* bare-metal; these are basically C wrappers over kernel
* syscalls. POSIX IO uses plain old ints as file
* descriptors, and it doesn't fuck around. when you say
* "write," god dammit, it WRITES.
*
* libc is a very different beast. libc has opinions.
* libc has abstractions. libc has its own entire goddamn
* DSL by which to specify format strings, because
* apparently someone felt called to reinvent FORTRAN
* except worse. printf(), you know, the first function
* they ever teach you in C 101? (more like CS 403
|
|
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
* scripts. so far so good.
*
* except unix has two distinctly different concepts of
* IO. there's POSIX IO, and then there's libc IO.
*
* POSIX IO uses the shit in <fcntl.h> and <unistd.h>;
* syscalls like read(2), write(2), and pipe(2) - the
* good, simple shit the Gods gave us unix for. this is
* really bare-metal; these are basically C wrappers over
* kernel syscalls. POSIX IO uses plain old ints as
* file descriptors, and it doesn't fuck around. when you
* say "write," goddammit, it WRITES.
*
* libc is a very different beast. libc has opinions.
* libc has abstractions. libc has its own entire goddamn
* DSL by which to specify format strings, because
* apparently someone felt called to reinvent FORTRAN
* except worse. printf(), you know, the first function
* they ever teach you in C 101? (more like CS 403
|