Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android系統開發(6)——Linux底層輸入輸出

Android系統開發(6)——Linux底層輸入輸出

編輯:關於Android編程

一、操作系統的體系結構

計算機是由一堆硬件組成的,操作系統是為了有效的控制這些硬件資源的軟件。操作系統除了有效地控制這些硬件資源的分配,並提供計算機運行所需要的功能之外,為了提供程序員更容易開發軟件的環境,操作系統還提供了一整組系統調用接口。\
如上圖所示,最中間的是硬件,操作系統是由內核和系統調用接口組成,其中內核是直接操作硬件的,內核提供了對這些硬件資源的控制和進程管理,系統調用接口向上提供了統一的調用接口方便開發人員調用。最上層就是應用程序,在應用程序中調用系統接口就能實現對硬件的操作。

二、Linux I/O系統

\
如上圖Linux的I/O系統結構圖,內核層有一個虛擬文件系統,就是使用標准的c類庫封裝的api,所以我們要操作文件系統只需要調用這裡的api即可。\

三、I/O的操作過程

1、打開文件一個應用程序通過要求內核打開相應的文件,宣告他要訪問一個I/O設備,內核返回一個非負整數,叫描述符號(DescriptZ喎?/kf/ware/vc/" target="_blank" class="keylink">vcqOpob7OxLz+zqjSu7HqyrahvzKhorbB0LTOxLz+tsGjurTTzsS8/r+9sbRuPjC49tfWvdq1vbTmtKLG96OoxNq05qOp0LSjurTTtOa0osb3o6jE2rTmo6m/vbG0bj4wuPbX1r3atb3OxLz+M6GiuMSx5M7EvP7Ou9bDNKGiudix1c7EvP621NPaxNq6y7b40dSjrMv509C08r+qzsS8/ra808nOxLz+w+jK9rf70v3Tw6GjzsS8/sPoyva3+8rH0ru49rfHuLrV+8r9oaO1sbTyv6rSu7j2z9a05s7EvP678rS0vajSu7j20MLOxLz+yrGjrMTausvP8r34s8y3tbvY0ru49s7EvP7D6Mr2t/uho7WxtsHQtNK7uPbOxLz+yrGjrNPDb3BlbrvyY3JlYXRlt7W72LXEzsS8/sPoyva3+2ZkserKtrjDzsS8/qOsvavG5Nf3zqqyzsr9tKvLzbj4cmVhZLvyd3JpdGUutvjB9yjI5zogZm9wZW4pt7W72LXEysfSu7j2RklMRb3hubnWuNXrLCBGSUxFveG5ucrHsPy6rNPQzsS8/sPoyva3+7XEo6xGSUxFveG5ubqvyv2/ydLUv7TX98rHttRmZNaxvdOy2df3tcTPtc2ztffTw7XEt+LXsCwgy/y1xNPFtePKx7T409BJL0+7urTmPHA+TGludXjWp7PWuPfW1rj30fm1xM7EvP7Ptc2zuPHKvaOsyOdleHQyoaJleHQzoaJyZWlzZXJmc6GiRkFUoaJOVEZToaJpc285NjYwtci1yKOssrvNrLXEtMXFzLfWx/ihornixcy78sbky/y05rSiyeixuLa809Cyu82stcTOxLz+z7XNs7jxyr2jrMi7tvjV4tCpzsS8/s+1zbO2vL/J0tRtb3VudLW9xLO49sS/wrzPwqOsyrnO0sPHv7S1vdK7uPbNs9K7tcTEv8K8yvejrLj31tbOxLz+z7XNs8nPtcTEv8K8us3OxLz+ztLDx9PDbHPD/MHuv7TG8MC0ysfSu9H5tcSjrLbB0LSy2df308PG8MC00rK2vMrH0rvR+bXEo6zV4srH1PXDtNf2tb21xMTYo79MaW51eMTausvU2rj31tayu82stcTOxLz+z7XNs7jxyr3WrsnP1/bBy9K7uPaz6c/zsuOjrMq5tcPOxLz+oaLEv8K8oaK2wdC0t8POyrXIuMXE7rPJzqqz6c/zsuO1xLjFxO6jrNLytMu499bWzsS8/s+1zbO/tMbwwLTTw8bwwLS2vNK70fmjrNXiuPaz6c/zsuOzxs6q0OnE4s7EvP7Ptc2zo6hWRlOjrFZpcnR1YWwgRmlsZXN5c3RlbaOpPC9wPjxwPjxpbWcgc3JjPQ=="/uploadfile/Collfiles/20140825/2014082508530025.png" alt="\" />

四、Linux底層輸入輸出

我們可以去GNU下載libc的源代碼和幫助文檔(源碼下載地址:http://ftp.gnu.org/gnu/glibc/)打開和關閉文件流
#include 
#include 
#include 
#include 
#include 

int main(int argc, char *argv[]){
        //open file
        if(argc<2){
                printf("please input filename\n");
                exit(1);
        }else{
                int fd;
                umask(0000);
                fd = open(argv[1], O_RDWR|O_CREAT, 0666);
                if(fd < -1){
                        printf("error\n");
                        exit(1);
                }else{
                        printf("success=%d\n", fd);
                        close(fd);
                        printf("closed\n");
                }
        }
        return 0;
}
讀文件(寫文件的過程和讀文件類似)
#include 
#include 
#include 
#include 
#include 
#include 

int main(int argc, char *argv[]){
        //open file
        if(argc<2){
                printf("please input filename\n");
                exit(1);
        }else{
                int fd;
                umask(0000);
                fd = open(argv[1], O_RDWR|O_CREAT, 0666);
                if(fd < -1){
                        printf("error\n");
                        exit(1);
                }else{
                        printf("success=%d\n", fd);
                        char buf[1024];
                        memset(buf, 0, 1024);
                        int returnum = read(fd, buf, 1024);
                        if(returnum != -1){
                                printf("buf=%s\n", buf);
                        }else{
                                printf("read error\n");
                                exit(1);
                        }
                        close(fd);
                        printf("closed\n");
                }
        }
        return 0;
}


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved