c语言打开/etc/passwd找出已注册的普通用户
时间: 2023-06-14 15:05:29 浏览: 196
Linux 初识/etc/passwd和/etc/shadow
在Linux系统下,/etc/passwd文件记录了系统中的所有用户信息,包括用户名、UID、GID、用户主目录、默认shell等信息。其中,普通用户的UID一般从1000开始分配。
在C语言中,可以使用fopen函数打开/etc/passwd文件,然后逐行读取文件内容。对于每一行,可以使用strtok函数将其按照":"进行分割,从而获取其中的用户名和UID信息。如果UID大于等于1000,就可以认为该用户是普通用户。
下面是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
FILE *fp;
char buf[1024];
char *token;
fp = fopen("/etc/passwd", "r");
if (fp == NULL) {
printf("Failed to open /etc/passwd\n");
return 1;
}
while (fgets(buf, sizeof(buf), fp) != NULL) {
token = strtok(buf, ":");
if (token != NULL) {
printf("Username: %s\n", token);
}
token = strtok(NULL, ":");
if (token != NULL) {
int uid = atoi(token);
if (uid >= 1000) {
printf("UID: %d (普通用户)\n", uid);
} else {
printf("UID: %d (系统用户)\n", uid);
}
}
}
fclose(fp);
return 0;
}
```
需要注意的是,该程序需要以超级用户权限运行才能访问/etc/passwd文件。
阅读全文