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指令的首字母索引