檔案I/O:open creat close lseek read write dup dup2 sync fsync fcntl ioctl
所有函數都是針對檔案描述符。
所有的都是原子操作,這個在多進程間共用檔案時就顯得尤為重要。
int open(const char *pathname,int flag,... /* mode_t mode*/) ;
Samples: open(pathname,O_RDWR | O_CREAT | O_TRUNC, mode);
int creat(const char *pathname,mode_t mode);
int close(int filedes);
off_t lseek(int filedes, off_t offset, int whence);
ssize_t read(int filedes, void *buf, size_t nbytes);
ssize_t write(int filedes, const void *buf, size_t nbytes);
標準I/O:FILE,
標準庫都是圍繞流進行的,(教訓:fflush就是一種通過重新整理緩衝讓緩衝中的資料被讀或者寫)。
我現在憑記憶可以羅列的就只有:FILE結構體, fopen,fread,fwrite,fclose,fgetc,fputc,fgets,fputs,fflush.
標準IO分為全緩衝,行緩衝,不帶緩衝。
全緩衝:填滿緩衝後才執行IO操作。
行緩衝:輸入或輸出中遇到分行符號時,標準庫執行IO操作。
對於行緩衝有兩個限制1)行的長度是有限制的,如果一行滿了,即使沒有分行符號也會執行IO操作。
2)任何時候,從一個不帶緩衝的流,或者一個行緩衝流得到輸入資料,就會造成沖洗所有緩衝流。【此處,或者很誤解】。
不帶緩衝:字元輸入輸出。通常標準出錯流stderr也是不帶緩衝的。
進階I/O:
關於進階I/O,有太多的內容,非阻塞I/O,記錄鎖,STREAMS,I/O多路轉換(select,pselect, poll ,epoll),非同步I/O(System V ,BSD),readv,writev,readn,writen.儲存映射I/O等。這些是Unix系統進階編程2裡介紹的。
http://blog.csdn.net/yunsongice
linux multimedia
http://tech.ccidnet.com/art/302/20060927/911605_7.html
http://gstreamer.freedesktop.org/