目录函数
1.getpwuid
struct passwd *getpwuid(uid_t uid);
功能:
根据用户id到/etc/passwd文件下解析获得
结构体信息
参数:uid:用户id
返回值:
成功返回id对应用户的信息
失败返回NULL
passwd
结构体的定义通常如下所示
struct passwd {
char *pw_name; /* 用户名 */
char *pw_passwd; /* 加密后的密码(在很多系统上,这只是一个占位符)*/
uid_t pw_uid; /* 用户ID */
gid_t pw_gid; /* 用户组ID */
char *pw_gecos; /* 用户的真实姓名或注释字段 */
char *pw_dir; /* 用户的主目录 */
char *pw_shell; /* 用户登录时使用的shell */
};
2.getgrgid
struct group *getgrgid(gid_t gid);
功能:根据gid到/etc/group文件中解析组信息
参数:gid:组id:w
返回值:
成功返回组信息
失败返回NULLstruct group
结构体包含了组的相关信息,定义如下:
struct group {
char *gr_name; /* 组名 */
char *gr_passwd; /* 组密码(在很多系统中可能是 '*' 或为空)*/
gid_t gr_gid; /* 组ID */
char **gr_mem; /* 组成员列表,以NULL结尾的字符指针数组 */
};
2.链接文件:
file.txt -> hello.c
软链接文件、符号链接文件
硬链接文件
软链接命令行:ln -s 123 softlink (生成的softlink就是快捷方式)
1.symlink
int symlink(const char *oldpath, const char *newpath);
功能:
创建一个链接向oldpath文件的新符号链接文件
参数:
oldpath:被链接向的文件的路径
newpath:新符号链接文件
返回值:
成功返回0
失败返回-1
2.remove (rm -fr)
int remove(const char *pathname);
功能:
删除一个文件
参数:
pathname:删除文件的路径
返回值:
成功返回0
失败返回-1
3.rename (mv =rename)
int rename(const char *oldpath, const char *newpath);
功能:
将一个老的路径名改为新的路径
参数:
oldpath:老路径名
newpath:新路径名
返回值:
成功返回0
失败返回-1
4.link (ln 1 2)
int link(const char *oldpath, const char *newpath);
功能:
创建一个硬链接文件
参数:
oldpath:要链接向的文件
newpath:创建的新硬链接文件
返回值:
成功返回0
失败返回-1
5.truncate
truncate
函数是一个系统调用,用于改变一个已存在文件的大小。这个函数的原型定义在<unistd.h>
头文件中,用于将文件的大小调整为指定的长度。如果文件之前的大小大于这个长度,则超出部分的内容会被丢弃;如果文件之前的大小小于这个长度,并且文件是以允许写入的模式打开的,那么文件的末尾会扩展到新的长度,但新增的部分不会进行初始化(即这部分内容是未定义的,可能包含随机数据)。
int truncate(const char *path, off_t length);
path
参数是一个指向以null结尾的字符串的指针,该字符串包含了要调整大小的文件的路径名。(文件要存在)length
参数指定了文件新的大小(以字节为单位)。- 如果调用成功,
truncate
返回0。 - 如果出现错误,
truncate
返回-1.
报错相关函数
1.perror
void perror(const char *s);-->strerror() stderr
功能:
打印s字符串和errno对应的错误信息
参数:
s:要打印在终端上的出错信息
返回值:
缺省
使用范围:c库函数、系统调用函数。
perror函数的工作原理是基于全局变量errno的值。errno是一个在错误发生时由系统调用或库函数设置的错误码,表示最近一次发生的错误。perror函数会读取errno的值,并将其转换为对应的错误描述字符串,然后将该字符串与参数s
(如果非NULL)一起输出到stderr。
2.strerror
char *strerror(int errnum);
功能:
打印errnum出错码对应的出错信息
参数:
errnum:出错errno号
返回值:
成功返回对应的错误信息
ruturn 1;
3.error ===>>>exit();
void error(int status, int errnum, const char *format, ...);
功能:
程序出错打印对应出错原因和用户输入字符串并退出
参数:
status:程序退出的状态
EXIT_FAILURE 1
EXIT_SUCCESS 0
errnum:错误码
format:类似printf打印
返回值:缺省
c语言中常用的内置宏:
__FILE__ 表示是那个文件(左 右2边都是2个下划线)
__LINE__表示第几行
__func__表示在那个函数
__DATE__
__TIME__
练习:3个报错函数的用法
#include <stdio.h>
#include <error.h>
#include <errno.h> //extern int errno
#include <string.h>
int main(int argc, char *argv[])
{
FILE* fp = fopen("aaa","r");
if(NULL == fp)
{
//perror("fopen");
//printf("%s\n",strerror(errno));
error(1,errno,"fopen,file:%s fun:%s line:%d",__FILE__,__func__,__LINE__);
printf("aaaa\n"); //使用error程序退出运行
return 1;
}
return 0;
}
Makefile
Makefile 编写 工程管理工具
vim 编辑器,
gcc 编译器 :查看语法错误,
gdb 调试器:查看逻辑错误 make
Makefile的三种用法
all:main.c add.c mul.c
gcc main.c add.c mul.c -o all
clean:
rm all
all:main.c add.c mul.c
gcc $^ -o $@ //$^:依赖 $@:目标(这里表示all)
clean:
rm all
SRC = main.c
SRC += add.c
SRC += mul.c
OBJ = all
#自定义的变量flag
FALG = -g //调试信息
LIB = -lm //调用数字库
CC = gcc //编译器
$(OBJ):$(SRC)
$(CC) $(SRC) -o $(OBJ) $(FLAG) $(LIB)
clean:
rm $(OBJ)