linux c system函數介紹:
system(執行shell 命令)
相關函數
fork,execve,waitpid,popen
表頭文件
#i nclude
定義函數
int system(const char * string);
函數說明
system()會調用fork()產生子進程,由子進程來調用/bin/sh-c string來執行參數string字元串所代表的命令,此命>令執行完後隨即返回原調用的進程。在調用system()期間SIGCHLD 信號會被暫時擱置,SIGINT和SIGQUIT 信號則會被忽略。
返回值
=-1:出現錯誤
=0:調用成功但是沒有出現子進程
>0:成功退出的子進程的id
如果system()在調用/bin/sh時失敗則返回127,其他失敗原因返回-1。若參數string為空指針(NULL),則返回非零值>。如果system()調用成功則最後會返回執行shell命令後的返回值,但是此返回值也有可能為 system()調用/bin/sh失敗所返回的127,因此最好能再檢查errno 來確認執行成功。
附加說明
在編寫具有SUID/SGID許可權的程序時請勿使用system(),system()會繼承環境變數,通過環境變數可能會造成系統安全的問題。
範例
#i nclude
main()
{
system("ls -al /etc/passwd /etc/shadow");
}
執行結果:
-rw-r--r-- 1 root root 705 Sep 3 13 :52 /etc/passwd
-r--------- 1 root root 572 Sep 2 15 :34 /etc/shado
例2:
char tmp[];
sprintf(tmp,"/bin/mount -t vfat %s /mnt/usb",dev);
system(tmp);
其中dev是/dev/sda1。
system函數的源碼
#include <syspes.h>
#include <sys/wait.h>
#include <errno.h>
#include <unistd.h>
int system(const char * cmdstring)
{
pid_t pid;
int status;
if(cmdstring == NULL){
return (1);
}
if((pid = fork())<0){
status = -1;
}
else if(pid = 0){
execl("/bin/sh", "sh", "-c", cmdstring, (char *)0);
-exit(127); //子進程正常執行則不會執行此語句
}
else
{
while(waitpid(pid, &status, 0) < 0){
if(errno != EINTER)
{
status = -1;
break;
}
}
}
return status;
}
那麼如何獲得system的返回值呢??
char buf[10];
char * ps="ps -ef|grep -c root";
FILE *ptr;
int i;
if((ptr = popen(ps, "r")) != NULL)
{
fgets(buf, 10 , ptr);
i = atoi(buf);
pclose(ptr);
}
可以man下waitpid查看下如何檢查status的值
int ret = system("ls -al /etc/passwd /etc/shadow");
if(WIFSIGNALED(ret))
具體的這些宏查看man waitpid
『貳』 execve的返回值是什麼
Linux下的都來了。LZ算是強人了。
真心十分佩服
相關函數 fork,execl,execle,execlp,execv,execvp
表頭文件 #include <unistd.h >
定義函數 int execve(const char * filename,char * const argv[ ],char * const envp[ ]);
函數說明 execve()用來執行參數filename字元串所伏虧畢代表的文件路徑,第二個參數系利用數組指針來傳遞給執行文件,最後一個參數則為傳遞給執行文件的新環境變數數組。
返回值 如果執行成功則函數不會返回,執行失敗則直接返回-1,失敗原因存於errno 中。
錯誤代碼 EACCES
1. 欲執行的文件不具有用戶可執行的許可權。
2. 欲執行的文件所屬的文件系統是以noexec 方式掛上。
3.欲執行的文件或script翻譯器非一般文件。
EPERM
1.進程處於被追蹤模式,執行者並不具有root許可權,欲執行的文件具有SUID 或SGID 位。
2.欲執行的文件所屬的文件系統是以nosuid方式掛上,欲執行的文件具有SUID 或SGID 位元,但執行者並不具有root許可權。
E2BIG 參數數組過大
ENOEXEC 無法判斷欲執行文件的執行文件格式,有可能是格式錯誤或無法在此平台執行。
EFAULT 參數filename所指的字元串地址超出可存取空間范圍。
ENAMETOOLONG 參數filename所指的字元串太長。
ENOENT 參數filename字元串所空茄指定的文件不存在。
ENOMEM 核心內存不足
ENOTDIR 參數filename字元串所包含的目錄路徑並非有效目錄
EACCES 參數filename字元串所包含的目錄路徑無法存取,許可權不足
ELOOP 過多的符號連接
ETXTBUSY 欲執行的文件已被其他進程打開而且正把數據寫入該文件中
EIO I/O 存取錯誤
ENFILE 已達到系統所允許的打開文件總數。
EMFILE 已達到系統所允許單一進程所能打開的文件總數。
EINVAL 欲執行文件的ELF執行格式不只一個PT_INTERP節區
EISDIR ELF翻譯器為一目錄
ELIBBAD ELF翻譯器有缺芹問題。
『叄』 在linux系統下實現對system() 函數對fork() ,exec(),waitpid()函數的調用。求大神解答
不知道你這實現這些函數的調用是什麼意思,是要重寫這些介面嗎?還是舉個例子說明?
我解釋一下吧:
(1)system()其實就是對fork()和exec()函數族等的封裝。
(2)fork()是用來產生子進程的,是現在我知道的唯一一個返回兩個值的函數(有過有另外的,麻煩網友指出),返回-1表示執行失敗;否則返回大於0的值時,表示是子進程的進程號,返回0時,表示父進程創建子進程成功。
(3)exec()不是一個函數,是函數族,有execl(),execv(),execle(),execve(),execlp(),execvp(),它們常用於子進程中「脫胎換骨」,就是父進程創建子進程後,子進程幾乎是父進程的拷貝(只有很少的東西不一樣,如進程號(PID)等),然後子進程調用exec()函數族執行其他的程序,即將原來進程的東西全部清除掉,稱為一個嶄新的進程,所以叫「脫胎換骨」。
(4)waitpid()是用在父進程中等待進程退出的,如果父進程不調用這個介面,那麼它有可能先於子進程退出,那麼子進程就會稱為孤兒進程,繼而被init進程(PID為1的進程,Linux啟動後第一個啟動的進程)收養。或者父進程並未退出,也未調用這個介面,但是子進程已經執行完成,那麼子進程就會成為一個僵屍進程。
具體例子在網上找找吧,都不是很難。
『肆』 Linux下如何用C語言獲取硬碟使用情況
system(執行shell命令)相關函數fork,execve,waitpid,popen表頭文件#include定義函數intsystem(constchar*string);函數說明system()會調用fork()產生子進程,由子進程來調用/bin/sh-cstring來執行參數string字元串所代表的命令,此命令執行完後隨即返回原調用的進程。在調用system()期間SIGCHLD信號會被暫時擱置,SIGINT和SIGQUIT信號則會被忽略。返回值如果system()在調用/bin/sh時失敗則返回127,其他失敗原因返回-1。若參數string為空指針(NULL),則返回非零值。如果system()調用成功則最後會返回執行shell命令後的返回值,但是此返回值也有可能為system()調用/bin/sh失敗所返回的127,因此最好能再檢查errno來確認執行成功。附加說明在編寫具有SUID/SGID許可權的程序時請勿使用system(),system()會繼承環境變數,通過環境變數可能會造成系統安全的問題。
『伍』 Linux C函數實例速查手冊的目錄
第1章 初級I/O函數
1.1 close函數:關閉已經打開的文件
1.2 creat函數:創建一個文件
1.3 p函數:復制文件描述符
1.4 p2函數:復制文件描述符到指定的位置
1.5 fcntl函數:改變文件的狀態
1.6 fsync函數:將緩沖區數據回寫到磁碟文件
1.7 Lseek函數:移動文件的讀寫位置
1.8 open函數:打開一個文件
1.9 read函數:讀取文件的數據
1.10 sync函數:將所有打開的文件寫回磁碟
1.11 write函數:輸出內容到文件
第2章 文件管理操作函數
2.1 access函數:判斷進程是否具有訪問文件的許可權
2.2 alphasort函數:按照字母順序排序目錄結構
2.3 chdir函數:改變當前的工作目錄
2.4 chmod函數:改變文件的許可權
2.5 chown函數:改變文件的所有者
2.6 chroot函數:改變進程的根目錄
2.7 closedir函數:關閉目錄文件
2.8 fchdir函數:使用文件描述符改變當前的工作目錄
2.9 fchmod函數:改變一個已經打開的文件的許可權
2.10 fstat函數:得到一個打開文件的狀態
2.11 truncate函數:改變一個打開文件的大小
2.12 ftw函數:遍歷目錄樹
2.13 get_current_dir_name函數:取得當前的工作目錄
2.14 getcwd函數:取得進程的當前工作目錄
2.15 lchown函數:改變符號鏈接文件的擁有者
2.16 link函數:建立一個硬鏈接
2.17 lstat函數:得到符號鏈接的文件狀態
2.18 nftw函數:遍歷目錄樹
2.19 opendir函數:打開目錄文件
2.20 readdir函數:讀取目錄文件的內容
2.21 readlink函數:讀取符號鏈接文件本身的內容
2.22 realpath函數:將相對目錄路徑轉換成絕對路徑
2.23 remove函數:刪除文件或者目錄
2.24 rename函數:更改文件的名稱或位置
2.25 rewinddir函數:回卷目錄文件
2.26 seekdir函數:文件定位函數
2.27 stat函數:取得文件狀態
2.28 symlink函數:創建一個符號鏈接
2.29 telldir函數:取得目錄文件的讀取位置
2.30 truncate函數:改變文件大小
2.31 umask:設置創建文件時使用的許可權掩碼
2.32 unlink函數:刪除文件的一個硬鏈接
第3章 標准I/O函數
3.1 clearerr函數:清除錯誤標志
3.2 fclose函數:關閉流文件描述符
3.3 fdopen函數:轉換文件描述符到文件指針
3.4 feof函數:文件結束判斷函數
3.5 fflush函數:刷新流文件讀寫緩存
3.6 fgetc函數:從流文件中讀取一個字元
3.7 fgetpos函數:返迴流文件當前讀寫位置
3.8 fgets函數:從流文件中讀出一行數據
3.9 fileno函數:獲得流文件的文件描述符
3.10 fopen函數:打開文件
3.11 fputc函數:將字元寫入流文件
3.12 fputs函數:將字元串寫入流文件
3.13 fread函數:從流文件中讀出數據
3.14 freopen函數:打開文件
3.15 fseek函數:移動流文件的讀寫位置
3.16 fsetpos函數:設置流文件當前讀寫位置
3.17 ftell函數:得到流文件的讀取位置
3.18 fwrite函數:向流文件中寫入數據
3.19 getc函數:從文件中讀出一個字元
3.20 getchar函數:從標准輸入中讀入一個字元
3.21 gets函數:從標准輸入中讀入一行數據
3.22 mktemp函數:產生臨時文件的文件名
3.23 putc函數:將字元寫入文件
3.24 putchar函數:將字元輸出到標准輸出中
3.25 puts函數:將字元串輸出在標准輸出中
3.26 rewind函數:將流文件的讀寫位置移動到文件的起始位置
3.27 setbuf函數:設置文件緩沖區
3.28 setbuffer函數:設置文件緩沖區
3.29 setlinebuf函數:設置行緩沖模式
3.30 setvbuf函數:設置自定義文件緩沖區
3.31 tmpfile函數:建立臨時的二進制文件
3.32 ungetc函數:將字元寫迴文件
第4章 格式化輸入輸出函數
4.1 fprintf函數:格式化輸出到文件
4.2 fscanf函數:格式化從文件中讀出數據
4.3 printf函數:格式化輸出
4.4 scanf函數:格式化輸入
4.5 snprintf函數:格式化字元輸入
4.6 sprintf函數:格式化字元串列印
4.7 sscanf函數:格式化字元串取值
4.8 vfprintf函數:可變參數輸出函數
4.9 vfscanf函數:格式化輸入
4.10 vprintf函數:格式化輸出函數
4.11 vscanf函數:格式化輸入函數
4.12 vsnprintf函數:格式化字元串復制
4.13 vsprintf函數:格式化字元串復制
4.14 vsscanf函數:格式化字元輸入
第5章 進程式控制制
5.1 abort函數:進程異常終止函數
5.2 atexit函數:進程終止處理函數
5.3 execl函數:執行文件函數
5.4 execle函數:執行文件的函數
5.5 execlp函數:從PATH環境變數中查找文件並執行
5.6 execv函數:執行文件
5.7 execve函數:執行文件
5.8 execvp函數:執行文件
5.9 exit函數:結束進程運行的函數
5.10 _exit函數:結束進程運行的函數
5.11 fork函數:建立一個新的進程
5.12 getgid函數:取得實際進程組ID
5.13 getegid函數:取得有效進程組ID
5.14 getpid函數:取得有效組ID
5.15 getppid函數:取得父進程的進程識別碼
5.16 getpriority函數:取得進程執行優先順序
5.17 longjmp函數:跳到原先setjmp存儲的堆棧環境
5.18 on_exit函數:設置程序正常結束前調用的函數
5.19 setjmp函數:存儲當前堆棧環境
5.20 setgid函數:設置進程的進程組ID
5.21 setuid函數:設置進程組ID
5.22 setpriority函數:設置程序進程優先順序
5.23 siglongjmp函數:跳到原先sigset jmp存儲的堆棧環境
5.24 sigsetjmp函數:存儲當前堆棧環境和屏蔽的信號集
5.25 system函數:執行Shell命令
5.26 vfork函數:建立一個新的進程
5.27 wait函數:等待子進程中斷或結束
5.28 waitpid函數:等待子進程中斷或結束
5.29 wait3函數:等待進程結束並且輸出子進程統計信息
第6章 進程間通信函數
6.1 ftok函數:獲得項目相關的IPC鍵值
6.2 msgctl函數:消息隊列操作函數
6.3 msgget函數:創建或打開消息隊列
6.4 msgrcv函數:讀取消息隊列
6.5 msgsnd函數:向消息隊列中寫入消息
6.6 semctl函數:信號量操作函數
6.7 semget函數:創建或打開信號量
6.8 semop函數:釋放或獲取信號量
6.9 shmat函數:導入共享內存
6.10 shmctl函數:共享內存操作函數
6.11 shmdt函數:將共享內存從程序中脫離
6.12 shmget函數:創建共享內存
6.13 mkfifo函數:創建fifo管道函數
6.14 pclose函數:關閉管道文件
6.15 pipe函數:創建匿名管道
6.16 popen函數:創建管道文件
第7章 信號函數
7.1 alarm函數:內核定時器函數
7.2 kill函數:信號發送函數
7.3 pause函數:進程暫停執行函數
7.4 raise函數:向進程自身發送信號函數
7.5 sigaction函數:高級信號處理方式設置函數
7.6 sigaddset函數:添加信號到信號集函數
7.7 sigdelset函數:刪除信號集中對應信號函數
7.8 sigemptyset函數:清空信號集函數
7.9 sigfillset函數:填充信號集函數
7.10 sigismember函數:測試某個信號是否在信號集中
7.11 signal函數:信號處理方式設置函數
7.12 sigpause函數:暫停進程直到信號到來
7.13 sigpending函數:查詢未決信號
7.14 sigprocmask函數:信號屏蔽函數
7.15 sigsuspend函數:暫停直到信號到來
7.16 sleep函數:讓進程休眠一段時間
第8章 用戶、組函數及環境變數函數
8.1 clearenv函數:刪除所有環境變數的值
8.2 cuserid函數:獲得用戶名函數
8.3 endgrent函數:關閉系統組文件函數
8.4 endpwent函數:關閉系統口令函數
8.5 entent函數:關閉utmp文件
8.6 fgetgrent函數:從文件中讀取組數據
8.7 fgetpwent函數:從文件中讀取密碼格式數據
8.8 getegid函數:獲得有效(effective gid)組識別符
8.9 getenv函數:取得環境變數的值
8.10 geteuid函數:獲得有效(effective uid)用戶識別符
8.11 getgid函數:獲得組識別符
8.12 getgrent函數:從文件/etc/group中讀取組信息
8.13 getgrgid函數:從文件/etc/group中查找組信息
8.14 getgrnam函數:從文件/etc/group中查找組信息
8.15 getgroups函數:返回當前用戶所屬的組列表
8.16 getlogin函數:獲取當前用戶的賬號名稱
8.17 getpw函數:獲取指定uid的用戶信息
8.18 getpwent函數:讀取/etc/passwd文件中的數據
8.19 getpwnam函數:以用戶名獲取用戶信息
8.20 getpwuid函數:以用戶ID獲取用戶信息
8.21 getuid函數:獲取當前進程所屬的用戶ID
8.22 getutent函數:獲取登錄信息
8.23 getutid函數:獲取指定用戶ID的登錄信息
8.24 getutline函數:查找指定的登錄信息
8.25 initgroups函數:初始化組信息
8.26 logwtmp函數:添加登錄記錄信息
8.27 putenv函數:改變環境變數的值
8.28 pututline函數:添加登錄信息
8.29 setegid函數:設置有效組ID
8.30 setenv函數:改變環境變數的值
8.31 seteuid函數:設置有效用戶ID
8.32 setfsgid函數:設置進程的文件系統的組ID
8.33 setfsuid函數:設置進程的文件系統的用戶ID
8.34 setgid函數:設置進程的組ID
8.35 setgrent函數:將文件etc/group的讀寫位置移動到起始位置
8.36 setgroups函數:設置當前進程的組識別符
8.37 setpwent函數:將文件etc/passwd的讀寫位置移動到起始位置
8.38 setregid函數:設置當前進程的真實以及有效組ID
8.39 setreuid函數:設置當前進程的真實以及有效用戶ID
8.40 setuid函數:設置進程的用戶ID
8.41 setutent函數:將文件utmp的讀寫位置移動到起始位置
8.42 unsetenv函數:清除環境變數的值
8.43 updwtmp函數:將登錄數據記錄寫入utmp文件
8.44 utmpname函數:設置文件utmp的絕對位置
第9章 錯誤處理與內存分配函數
9.1 brk函數:改變數據段大小
9.2 calloc函數:內存分配函數
9.3 ferror函數:文件錯誤判斷
9.4 free函數:釋放動態分配內存函數
9.5 getpagesize函數:獲得操作系統內存頁大小函數
9.6 malloc函數:動態內存分配函數
9.7 mmap函數:文件映射函數
9.8 munmap函數:釋放映射的內存地址
9.9 perror函數:錯誤原因輸出函數
9.10 realloc函數:內存截取函數
9.11 sbrk函數:增加數據空間
9.12 strerror函數:錯誤代碼查詢
第10章 日誌函數、動態函數與正則表達式函數
10.1 closelog函數:關閉信息記錄
10.2 dlclose函數:關閉動態庫文件
10.3 dlerror函數:動態函數出錯處理
10.4 dlopen函數:打開動態庫文件
10.5 dlsym函數:在動態庫文件中查找函數
10.6 openlog函數:打開記錄信息
10.7 regcomp函數:編譯正則表達式
10.8 regerror函數:編譯錯誤判斷函數
10.9 regexec函數:執行正則匹配
10.10 regfree函數:釋放正則模式串資源
10.11 syslog函數:輸出記錄信息
第11章 時間函數
11.1 asctime函數:字元串時間操作函數
11.2 clock函數:計算運行時間函數
11.3 ctime函數:字元串時間函數
11.4 difftime函數:計算時間差函數
11.5 ftime函數:取得系統時間
11.6 gettimeofday函數:取得系統當前時間
11.7 gmtime函數:日歷時間格式函數
11.8 localtime函數:獲得當前系統時間
11.9 mktime函數:系統時間轉換函數
11.10 settimeofday函數:系統時間設置函數
11.11 strftime函數:時間格式化輸出函數
11.12 time函數:獲得系統當前時間
11.13 tzset函數:設置系統時區變數tzname
第12章 socket相關函數
12.1 accept函數:處理socket請求函數
12.2 bind函數:將socket描述符與一個套介面綁定
12.3 connect函數:與遠程主機連接
12.4 endprotoent函數:結束網路協議的讀取函數
12.5 endservent函數:關閉文件/etc/services
12.6 gethostbyaddr函數:由IP獲得主機信息
12.7 gethostbyname函數:由主機名獲得主機信息
12.8 getprotobyname函數:由協議名獲取協議數據
12.9 getprotobynumber函數:由協議編號獲取協議數據
12.10 getprotoent函數:讀取文件/etc/rotoent中的網路協議數據
12.11 getservbyname函數:獲得網路服務協議數據
12.12 getservbyport函數:獲得網路服務協議數據
12.13 getservent函數:讀取主機網路服務數據
12.14 getsockopt函數:獲得指定socket描述符的狀態
12.15 herror函數:錯誤原因輸出函數
12.16 hstrerror函數:錯誤代碼查詢
12.17 htonl函數:地址位元組順序轉換
12.18 htons函數:地址位元組順序轉換
12.19 inet_addr函數:網路地址類型轉換
12.20 inet_aton函數:網路地址類型轉換
12.21 inet_ntoa函數:網路地址類型轉換
12.22 listen函數:網路socket監聽
12.23 ntohl函數:地址位元組順序轉換
12.24 ntohs函數:地址位元組順序轉換
12.25 recv函數:接收消息
12.26 recvfrom函數:接收消息
12.27 recvmsg函數:多緩沖讀取數據
12.28 send函數:向遠程主機發送數據
12.29 sendto函數:發送數據到遠程主機
12.30 setprotoent函數:打開網路協議文件
12.31 setservent函數:打開網路服務文件
12.32 setsockopt函數:設置socket描述符的狀態
12.33 shutdown函數:結束socket套接字
12.34 socket函數:創建網路套接字
第13章 字元測試函數
13.1 isalnum函數:判斷字元是否為英文字母或數字
13.2 isalpha函數:判斷字元是否為英文字母
13.3 isascii函數:判斷字元是否為ASCII字元
13.4 isblank函數:判斷字元是否為空白字元
13.5 iscntrl函數:判斷字元是否為ASCII的控制字元
13.6 isdigit函數:判斷字元是否為阿拉伯數字
13.7 isgraph函數:判斷字元是否為可列印字元
13.8 islower函數:判斷字元是否為小寫英文字母
13.9 isprint函數:判斷字元是否為可列印字元
13.10 isspace函數:判斷字元是否為空格字元
13.11 ispunct函數:判斷字元是否為標點符號
13.12 isupper函數:判斷字元是否為大寫英文字母
13.13 isxdigit函數:判斷字元是否為十六進制數字
第14章 數據轉換函數
14.1 atof函數:將字元串轉換成浮點數
14.2 atoi函數:將字元串轉換成整數
14.3 atol函數:將字元串轉換成長整數
14.4 ecvt函數:將浮點數轉換成字元串
14.5 fcvt函數:將浮點數轉換成字元串
14.6 gcvt函數:將浮點數轉換成字元串
14.7 strtod函數:將字元串轉換成浮點數
14.8 strtol函數:將字元串轉換成長整數
14.9 strtoul函數:將字元串轉換成無符號長整數
14.10 toascii函數:將整數轉換成合法的ASCII字元
14.11 tolower函數:將大寫字母轉換成小寫字母
14.12 toupper函數:將小寫字母轉換成大寫字母
第15章 字元串處理函數
15.1 bcmp函數:比較兩塊內存中的內容
15.2 b函數:復制內存中的內容
15.3 bzero函數:將一塊內存內容全清零
15.4 ffs函數:在一個整數中查找第一個值為真的位
15.5 index函數:查找字元串中第一個出現的指定字元
15.6 memccpy函數:復制內存中的內容
15.7 memchr函數:在一塊內存指定范圍查找一個指定字元
15.8 memcmp函數:比較內存中存放的內容
15.9 memcpy函數:復制一塊內存內容到另一塊中
15.10 memfrob函數:對某個內存區重新編碼
15.11 memmove函數:復制內存內容
15.12 memset函數:將某值填入到一塊內存區域
15.13 rindex函數:查找字元串中最後一個出現的指定字元
15.14 strcasecmp函數:忽略大小寫比較字元串
15.15 strcat函數:將一個字元串連接另一字元串的尾部
15.16 strchr函數:查找字元串中指定字元
15.17 strcmp函數:比較兩個字元串
15.18 strcoll的函數:根據當前環境信息來比較字元串
15.19 strcpy函數:復制一個字元串的內容到另一個字元串中
15.20 strcspn函數:計算字元串中由非指定字元集字元組成的子字元串的長度
15.21 strp函數:復制字元串內容
15.22 strfry函數:隨機重組一個字元串
15.23 strlen函數:返回字元串長度
15.24 strncasecmp函數:忽略大小寫比較兩個字元串
15.25 strncat函數:將一個字元串的前n個字元連接到另一字元串的尾部
15.26 strncmp函數:比較兩個字元串
15.27 strncpy函數:復制字元串
15.28 strpbrk函數:查找字元串中第一個出現的指定字元
15.29 strrchr函數:查找字元串中最後一個出現的指定字元
15.30 strspn函數:計算字元串中由指定字元集字元組成的子字元串的長度
第16章 數學計算函數
16.1 abs函數:計算整數的絕對值
16.2 acos函數:計算反餘弦的值
16.3 asin函數:計算反正弦的值
16.4 atan函數:計算反正切的值
16.5 atan2函數:計算反正切的值
16.6 ceil函數:計算大於或等於給定參數的最小整數
16.7 cos函數:計算餘弦的值
16.8 cosh函數:計算雙曲線的餘弦值
16.9 div函數:計算兩整數相除後的商和余數
16.10 exp函數:計算浮點數的指數
16.11 fabs函數:計算浮點數的絕對值
16.12 frexp函數:計算浮點數的尾數和指數
16.13 hypot函數:計算直角三角形斜邊長度
16.14 labs函數:計算長整數的絕對值
16.15 ldexp函數:計算浮點數與2的exp次方的積
16.16 ldiv函數:計算兩長整數相除後的商和余數
16.17 log函數:計算以e為底的對數值
16.18 log10函數:計算以10為底的對數值
16.19 modf函數:將浮點數分解為小數和整數兩部分
16.20 pow函數:計算次方值
16.21 sin函數:取正弦的值
16.22 sinh函數:計算雙曲線的正弦值
16.23 sqrt函數:計算浮點數的平方根
16.24 tan函數:計算角度的正切值
16.25 tanh函數:計算雙曲線的正切函數值
第17章 隨機數及數據加密函數
17.1 crypt函數:對字元串使用DES演算法編碼
17.2 drand48函數:產生一個正的隨機浮點數
17.3 erand48函數:產生一個正的隨機浮點數
17.4 initstate:建立隨機數狀態數組
17.5 jrand48函數:產生一個長整型的隨機數
17.6 lcong48函數:設置48位運算的隨機數種子
17.7 lrand48函數:產生一個正的長整型隨機數
17.8 mrand48函數:產生一個長整型隨機數
17.9 nrand48函數:產生一個正的長整數隨機數
17.10 rand函數:產生偽隨機數
17.11 random函數:產生隨機數
17.12 seed48函數:設置48位運算的隨機數種子
17.13 setstate函數:建立隨機數狀態數組
17.14 srand函數:設置隨機數種子
17.15 srand48函數:設置48位運算的隨機數種子
17.16 srandom函數:設置隨機數種子
17.17 getpass函數:取得用戶輸入密碼字元串
第18章 數據結構函數
18.1 bsearch函數:在有序數組中二分查找數據
18.2 hcreate函數:建立哈希表
18.3 hdestroy函數:刪除哈希表
18.4 hsearch函數:在哈希表中查找關鍵數據
18.5 lfind函數:線性搜索
18.6 lsearch函數:線性搜索
18.7 qsort函數:使用快速排序法排列數組
18.8 tdelete函數:從二叉樹中刪除數據
18.9 tfind函數:搜索二叉樹
18.10 tsearch函數:搜索二叉樹
18.11 twalk函數:遍歷二叉樹
第19章 其他函數
19.1 getopt函數:分析命令參數
19.2 isatty函數:判斷文件描述符是否為終端
19.3 pselect函數:多路轉接I/O
19.4 select函數:多路I/O轉接
19.5 ttyname函數:返回終端機的名稱
附錄A Linux函數的首字母索引
附錄B Linux指令的首字母索引