惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Application and Cybersecurity Blog
Application and Cybersecurity Blog
S
Securelist
K
Kaspersky official blog
Scott Helme
Scott Helme
C
CXSECURITY Database RSS Feed - CXSecurity.com
GbyAI
GbyAI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Cisco Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - Franky
Security Latest
Security Latest
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Y
Y Combinator Blog
T
Threat Research - Cisco Blogs
L
LINUX DO - 热门话题
C
Cyber Attacks, Cyber Crime and Cyber Security
Project Zero
Project Zero
Cisco Talos Blog
Cisco Talos Blog
月光博客
月光博客
I
Intezer
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
人人都是产品经理
人人都是产品经理
L
Lohrmann on Cybersecurity
Recorded Future
Recorded Future
Latest news
Latest news
V2EX - 技术
V2EX - 技术
T
The Exploit Database - CXSecurity.com
H
Heimdal Security Blog
F
Fortinet All Blogs
Cloudbric
Cloudbric
IT之家
IT之家
博客园 - 叶小钗
Microsoft Security Blog
Microsoft Security Blog
P
Proofpoint News Feed
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
PCI Perspectives
PCI Perspectives
AWS News Blog
AWS News Blog
H
Help Net Security
S
Security @ Cisco Blogs
酷 壳 – CoolShell
酷 壳 – CoolShell
Recent Announcements
Recent Announcements
Hacker News - Newest:
Hacker News - Newest: "LLM"
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
F
Full Disclosure
S
Schneier on Security
S
Security Affairs
T
Tenable Blog

博客园 - wolflion

《UNIX-Shell编程24学时教程》读书笔记Chap3,4 文件,目录操作 《UNIX-Shell编程24学时教程》读书笔记Chap1,2 Shell基础,脚本基础 《UNIX-Shell编程24学时教程》读书笔记chap7 变量 《软件调试的艺术》读书笔记 ubuntu环境准备 ftp的实现 icmp的程序(ping的实现) cp命令 苦逼IT才能看懂的笑话 debug和release版区别 i5处理器的台式机[百度知道] 关于轮胎尺寸问题 常见内核数据结构.doc windows 系统编程 Chap7 线程和调度 EVRYTHNG.H Windows系统编程chap6 Windows系统编程 chap5 booklist 转 windows code
who命令
wolflion · 2013-07-23 · via 博客园 - wolflion

who1.c

#include <stdio.h>
#include <utmp.h>
#include <fcntl.h>
#include <unistd.h>

#define SHOWHOST /*include remote machine on output*/

show_info(struct utmp *utbufp)
{
printf("% -8.8s", utbufp->ut_name);//the logname
printf(" ");//a space
printf("% -8.8s", utbufp->ut_line);//the tty
printf(" ");//a space
printf("% -10ld", utbufp->ut_time);//login time
printf(" ");//a space
#ifdef SHOWHOST
printf("(%s)", utbufp->ut_host);//the host
#endif
printf("\n");//newline
}
int main()
{
struct utmp current_record; /*read info into here*/
int utmpfd; /*read from this descriptor*/
int reclen = sizeof(current_record);

if ((utmpfd = open(UTMP_FILE, O_RDONLY)) == -1)
{
perror(UTMP_FILE);/*UTMP_FILE is utmp.h*/
exit(1);
}

while(read(utmpfd, &current_record, reclen) == reclen)
show_info(&current_record);
close(utmpfd);
return 0;/*went ok*/

}

who2.c

#include <stdio.h>
#include <utmp.h>
#include <fcntl.h>
#include <unistd.h>
//who2 added
#include <time.h>

#define SHOWHOST /*include remote machine on output*/

void show_info(struct utmp *utbufp);
//who2 added
void showtime(long);

int main()
{
struct utmp current_record; /*read info into here*/
int utmpfd; /*read from this descriptor*/
int reclen = sizeof(current_record);

if ((utmpfd = open(UTMP_FILE, O_RDONLY)) == -1)
{
perror(UTMP_FILE);/*UTMP_FILE is utmp.h*/
exit(1);
}

while(read(utmpfd, &current_record, reclen) == reclen)
show_info(&current_record);
close(utmpfd);
return 0;/*went ok*/

}

show_info(struct utmp *utbufp)
{
//who2 added
if (utbufp->ut_type != USER_PROCESS)
{
return;
}
//who2 end
printf("% -8.8s", utbufp->ut_name);//the logname
printf(" ");//a space
printf("% -8.8s", utbufp->ut_line);//the tty
printf(" ");//a space
//printf("% -10ld", utbufp->ut_time);//login time
//printf(" ");//a space
showtime(utbufp->ut_time);
#ifdef SHOWHOST
printf("(%s)", utbufp->ut_host);//the host
#endif
printf("\n");//newline
}

//who2 added
void showtime(long timeval)
{
char *cp;//to hold address of time
cp = ctime(&timeval);
printf("%12.12s", cp+4);//pick 12 chars from pos 4
}
//who2 end