C說話編程中從暗碼文件獲得數據的函數總結。本站提示廣大學習愛好者:(C說話編程中從暗碼文件獲得數據的函數總結)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話編程中從暗碼文件獲得數據的函數總結正文
C說話getpw()函數:獲得指定用戶的暗碼文件數據
頭文件:
#include <pwd.h> #include <sys/types.h>
界說函數:
int getpw(uid_t uid, char *buf);
函數解釋:getpw()會從/etc/passwd中查找相符參數uid所指定的用戶賬號數據, 找不到相干數據就前往-1。
所前往的buf 字符串格局以下:
賬號:暗碼:用戶辨認碼(uid):組辨認碼(gid):全名:根目次:shell
前往值:前往 0 表現勝利, 有毛病產生時前往-1.
附加解釋
1. getpw()會有潛伏的平安性成績, 請盡可能應用其余函數代替。
2. 應用shadow 的體系已把用戶暗碼抽出/etc/passwd, 是以應用getpw()獲得的暗碼將為"x"。
典范
#include <pwd.h> #include <sys/types.h> main() { char buffer[80]; getpw(0, buffer); printf("%s\n", buffer); }
履行:
root:x:0:0:root:/root:/bin/bash
C說話getpwnam()函數:從暗碼文件中獲得指定賬號的數據
頭文件:
#include <pwd.h> #include <sys/types.h>
界說函數:
struct passwd * getpwnam(const char * name);
函數解釋:getpwnam()用來一一搜刮參數name 指定的賬號稱號, 找到時便將該用戶的數據以passwd 構造前往。passwd 構造請參考getpwent()。
前往值:前往 passwd 構造數據, 假如前往NULL 則表現已有數據, 或有毛病產生.
典范
/*獲得root 賬號的辨認碼和根目次 */ #include <pwd.h> #include <sys/types.h> main() { struct passwd *user; user = getpwnam("root"); printf("name:%s\n", user->pw_name); printf("uid:%d\n", user->pw_uid); printf("home:%s\n", user->pw_dir); }
履行:
name:root uid:0 home:/root
C說話getpwuid()函數:從暗碼文件中獲得指定uid的數據
頭文件:
#include <pwd.h> #include <sys/types.h>
界說函數:
struct passwd * getpwuid(uid_t uid);
函數解釋:getpwuid()用來一一搜刮參數uid 指定的用戶辨認碼, 找到時便將該用戶的數據以構造前往構造請參考將該用戶的數據以passwd 構造前往. passwd 構造請參考getpwent()。
前往值:前往 passwd 構造數據, 假如前往NULL 則表現已有數據, 或許有毛病產生.
典范
#include <pwd.h> #include <sys/types.h> main() { struct passwd *user; user= getpwuid(6); printf("name:%s\n", user->pw_name); printf("uid:%d\n", user->pw_uid); printf("home:%s\n", user->pw_dir); }
履行:
name:shutdown uid:6 home:/sbin