新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 常見的Linux系統調用

        常見的Linux系統調用

        作者: 時間:2011-02-25 來源:網絡 收藏
        本文列出了大部分常見的Linux系統調用,并附有簡要中文說明。

        以下是Linux系統調用的一個列表,包含了大部分常用系統調用和由系統調用派生出的的函數。這可能是你在互聯網上所能看到的唯一一篇中文注釋的Linux系統調用列表,即使是簡單的字母序英文列表,能做到這么完全也是很罕見的。

        按照慣例,這個列表以man pages第2節,即系統調用節為藍本。按照筆者的理解,對其作了大致的分類,同時也作了一些小小的修改,刪去了幾個僅供內核使用,不允許用戶調用的系統調用,對個別本人稍覺不妥的地方作了一些小的修改,并對所有列出的系統調用附上簡要注釋。

        其中有一些函數的作用完全相同,只是參數不同。(可能很多熟悉C 朋友馬上就能聯想起函數重載,但是別忘了Linux核心是用C語言寫的,所以只能取成不同的函數名)。還有一些函數已經過時,被新的更好的函數所代替了(gcc在鏈接這些函數時會發出警告),但因為兼容的原因還保留著,這些函數我會在前面標上“*”號以示區別。

        一、進程控制:

        fork創建一個新進程
        clone按指定條件創建子進程
        execve運行可執行文件
        exit中止進程
        _exit立即中止當前進程
        getdtablesize進程所能打開的最大文件數
        getpgid獲取指定進程組標識號
        setpgid設置指定進程組標志號
        getpgrp獲取當前進程組標識號
        setpgrp設置當前進程組標志號
        getpid獲取進程標識號
        getppid獲取父進程標識號
        getpriority獲取調度優先級
        setpriority設置調度優先級
        modify_ldt讀寫進程的本地描述表
        nanosleep使進程睡眠指定的時間
        nice改變分時進程的優先級
        pause掛起進程,等待信號
        personality設置進程運行域
        prctl對進程進行特定操作
        ptrace進程跟蹤
        sched_get_priority_max取得靜態優先級的上限
        sched_get_priority_min取得靜態優先級的下限
        sched_getparam取得進程的調度參數
        sched_getscheduler取得指定進程的調度策略
        sched_rr_get_interval取得按RR算法調度的實時進程的時間片長度
        sched_setparam設置進程的調度參數
        sched_setscheduler設置指定進程的調度策略和參數
        sched_yield進程主動讓出處理器,并將自己等候調度隊列隊尾
        vfork創建一個子進程,以供執行新程序,常與execve等同時使用
        wait等待子進程終止
        wait3參見wait
        waitpid等待指定子進程終止
        wait4參見waitpid
        capget獲取進程權限
        capset設置進程權限
        getsid獲取會晤標識號
        setsid設置會晤標識號






        回頁首


        二、文件系統控制

        1、文件讀寫操作

        fcntl文件控制
        open打開文件
        creat創建新文件
        close關閉文件描述字
        read讀文件
        write寫文件
        readv從文件讀入數據到緩沖數組中
        writev將緩沖數組里的數據寫入文件
        pread對文件隨機讀
        pwrite對文件隨機寫
        lseek移動文件指針
        _llseek在64位地址空間里移動文件指針
        dup復制已打開的文件描述字
        dup2按指定條件復制文件描述字
        flock文件加/解鎖
        pollI/O多路轉換
        truncate截斷文件
        ftruncate參見truncate
        umask設置文件權限掩碼
        fsync把文件在內存中的部分寫回磁盤


        2、文件系統操作

        access確定文件的可存取性
        chdir改變當前工作目錄
        fchdir參見chdir
        chmod改變文件方式
        fchmod參見chmod
        chown改變文件的屬主或用戶組
        fchown參見chown
        lchown參見chown
        chroot改變根目錄
        stat取文件狀態信息
        lstat參見stat
        fstat參見stat
        statfs取文件系統信息
        fstatfs參見statfs
        readdir讀取目錄項
        getdents讀取目錄項
        mkdir創建目錄
        mknod創建索引節點
        rmdir刪除目錄
        rename文件改名
        link創建鏈接
        symlink創建符號鏈接
        unlink刪除鏈接
        readlink讀符號鏈接的值
        mount安裝文件系統
        umount卸下文件系統
        ustat取文件系統信息
        utime改變文件的訪問修改時間
        utimes參見utime
        quotactl控制磁盤配額






        回頁首


        三、系統控制

        ioctlI/O總控制函數
        _sysctl讀/寫系統參數
        acct啟用或禁止進程記賬
        getrlimit獲取系統資源上限
        setrlimit設置系統資源上限
        getrusage獲取系統資源使用情況
        uselib選擇要使用的二進制函數庫
        ioperm設置端口I/O權限
        iopl改變進程I/O權限級別
        outb低級端口操作
        reboot重新啟動
        swapon打開交換文件和設備
        swapoff關閉交換文件和設備
        bdflush控制bdflush守護進程
        sysfs取核心支持的文件系統類型
        sysinfo取得系統信息
        adjtimex調整系統時鐘
        alarm設置進程的鬧鐘
        getitimer獲取計時器值
        setitimer設置計時器值
        gettimeofday取時間和時區
        settimeofday設置時間和時區
        stime設置系統日期和時間
        time取得系統時間
        times取進程運行時間
        uname獲取當前UNIX系統的名稱、版本和主機等信息
        vhangup掛起當前終端
        nfsservctl對NFS守護進程進行控制
        vm86進入模擬8086模式
        create_module創建可裝載的模塊項
        delete_module刪除可裝載的模塊項
        init_module初始化模塊
        query_module查詢模塊信息
        *get_kernel_syms取得核心符號,已被query_module代替






        回頁首


        四、內存管理

        brk改變數據段空間的分配
        sbrk參見brk
        mlock內存頁面加鎖
        munlock內存頁面解鎖
        mlockall調用進程所有內存頁面加鎖
        munlockall調用進程所有內存頁面解鎖
        mmap映射虛擬內存頁
        munmap去除內存頁映射
        mremap重新映射虛擬內存地址
        msync將映射內存中的數據寫回磁盤
        mprotect設置內存映像保護
        getpagesize獲取頁面大小
        sync將內存緩沖區數據寫回硬盤
        cacheflush將指定緩沖區中的內容寫回磁盤






        回頁首


        五、網絡管理

        getdomainname取域名
        setdomainname設置域名
        gethostid獲取主機標識號
        sethostid設置主機標識號
        gethostname獲取本主機名稱
        sethostname設置主機名稱






        回頁首


        六、socket控制

        socketcallsocket系統調用
        socket建立socket
        bind綁定socket到端口
        connect連接遠程主機
        accept響應socket連接請求
        send通過socket發送信息
        sendto發送UDP信息
        sendmsg參見send
        recv通過socket接收信息
        recvfrom接收UDP信息
        recvmsg參見recv
        listen監聽socket端口
        select對多路同步I/O進行輪詢
        shutdown關閉socket上的連接
        getsockname取得本地socket名字
        getpeername獲取通信對方的socket名字
        getsockopt取端口設置
        setsockopt設置端口參數
        sendfile在文件或端口間傳輸數據
        socketpair創建一對已聯接的無名socket






        回頁首


        七、用戶管理

        getuid獲取用戶標識號
        setuid設置用戶標志號
        getgid獲取組標識號
        setgid設置組標志號
        getegid獲取有效組標識號
        setegid設置有效組標識號
        geteuid獲取有效用戶標識號
        seteuid設置有效用戶標識號
        setregid分別設置真實和有效的的組標識號
        setreuid分別設置真實和有效的用戶標識號
        getresgid分別獲取真實的,有效的和保存過的組標識號
        setresgid分別設置真實的,有效的和保存過的組標識號
        getresuid分別獲取真實的,有效的和保存過的用戶標識號
        setresuid分別設置真實的,有效的和保存過的用戶標識號
        setfsgid設置文件系統檢查時使用的組標識號
        setfsuid設置文件系統檢查時使用的用戶標識號
        getgroups獲取后補組標志清單
        setgroups設置后補組標志清單






        回頁首


        八、進程間通信

        ipc進程間通信總控制調用


        1、信號

        sigaction設置對指定信號的處理方法
        sigprocmask根據參數對信號集中的信號執行阻塞/解除阻塞等操作
        sigpending為指定的被阻塞信號設置隊列
        sigsuspend掛起進程等待特定信號
        signal參見signal
        kill向進程或進程組發信號
        *sigblock向被阻塞信號掩碼中添加信號,已被sigprocmask代替
        *siggetmask取得現有阻塞信號掩碼,已被sigprocmask代替
        *sigsetmask用給定信號掩碼替換現有阻塞信號掩碼,已被sigprocmask代替
        *sigmask將給定的信號轉化為掩碼,已被sigprocmask代替
        *sigpause作用同sigsuspend,已被sigsuspend代替
        sigvec為兼容BSD而設的信號處理函數,作用類似sigaction
        ssetmaskANSI C的信號處理函數,作用類似sigaction


        2、消息

        msgctl消息控制操作
        msgget獲取消息隊列
        msgsnd發消息
        msgrcv取消息


        3、管道

        pipe創建管道


        4、信號量

        semctl信號量控制
        semget獲取一組信號量
        semop信號量操作


        5、共享內存

        shmctl控制共享內存
        shmget獲取共享內存
        shmat連接共享內存
        shmdt拆卸共享內存
        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 阳江市| 新郑市| 西平县| 陵川县| 靖安县| 石门县| 北宁市| 武平县| 噶尔县| 铜陵市| 铅山县| 恩施市| 唐河县| 高碑店市| 五原县| 林周县| 吴堡县| 淮南市| 万山特区| 上饶市| 丹寨县| 镶黄旗| 竹山县| 清水县| 绥阳县| 武鸣县| 巴里| 桑植县| 策勒县| 建昌县| 庆元县| 海丰县| 红安县| 简阳市| 云浮市| 聊城市| 莱西市| 余姚市| 阜平县| 洪雅县| 慈利县|