先来看一个简单的读写文件程序,程序读取源文件,然后把内容打印到屏幕上:
#include <unistd.h>
#include <fcntl.h>
#define BUFSIZE 4096
int main(void)
{
int fd, nbytes;
char buf[BUFSIZE];
fd = open(__FILE__, O_RDONLY);
while ((nbytes = read(fd, buf, BUFSIZE)) > 0)
write(1, buf, nbytes);
close(fd);
return 0;
}
在这个例子中的 read()/write() 都是同步阻塞 IO,即如果没有数据可读或写入未完成时当前线程会一直等待,直到读写操作完成或出错才会返回。
同步 … 阅读全文…