Linux环境-用户信息&主机信息&临时文件
用户信息&主机信息
2019年10月22日
13:39
通过检查环节变量与读取系统时间,程序可以很大程度上了解当前运行的信息。以内部机制来说,用户还有一个唯一的用户标识符UID,Linux每运行一个程序,实际上都是以某个用户的名义在执行,因此程序都会有一个关联的UID。
也可以使用SUID(文件属主ID),su命令(超级用户)来执行程序。
头文件 sys/types.h 中 定义了uid_t结构体
Linux有一个shadow密码文件,普通用户不允许读取,有一组函数来提供函数接口。
Linux临时文件
1 #include <unistd.h> 2 3 int gethostname(char *name, size_t namelen); //函数把机器的网络名写入name字符串,写入成功返回0,失败返回-1. 4 5 int uname(struct utsname *name); //返回utname结构体 包含了主机更多的信息 6 7 long gethostid(void); //返回与主机对应的一个唯一值,对于系统硬件是唯一的。Linux返回一个基于该机器因特网地址的值,但对于许可证管理来说不够安全。
很多时候,程序会使用一些文件形式的临时存储手段,用来存储计算的中间结果或关键操作前的文件备份。多任务的系统中,必须保证程序里的临时文件名是唯一的,否则程序间将造成干扰。以下函数可以生成唯一的文件名
1 #include<stdio.h> 2 3 char *tmpnam(char *s)
返回一个不与任何已存在文件同名的文件名。字符串的长度至少是20个字符,tmpnam最多可以被调用TMP_MAX次
使用tmpfile()函数,在使用tmpnam为临时文件命名后创建文件并将文件打开,可以避免另一个程序可能会创建出与tmpnam()返回的文件名相同的文件。
以下两个函数,与上边两个函数类似 区别在于可以按照指定的模板生成临时文件