8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

又到了周四分享环节,鉴于最近在看linux编程实践,所以就的讲一下如何编写一个简单的who命令。

PPT

Manual Page

Manual Page 也就是大家常用的man命令,是unix、类unix系统常用的程序文档。1

2

3

4Usage:

$ man

$ man -k [apropos options] regexp

这种形式我们可以通过关键字来匹配手册中的descriptions。

man man:1 Executable programs or shell commands

2 System calls (functions provided by the kernel)

3 Library calls (functions within program libraries)

4 Special files (usually found in /dev)

5 File formats and conventions eg /etc/passwd

6 Games

7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)

8 System administration commands (usually only for root)

9 Kernel routines [Non standard]

可以看出来我们主要用2 和 3

WHO1

2

3

4$ who

kcilcarus tty1 2018-07-06 06:06 (:0)

用户名 终端 时间

who命令对应的输出如上所示,那么我们猜下who的工作原理:用户登录登出的时候,会将信息保存在某个文件

who命令打开这个文件

读取文件信息

输入到控制台

恩, 逻辑很清晰。 下面就是如何做了。

如何知道who命令读取的那个文件呢?1

2

3

4

5

6

7

8

9

10

11

12$ man who

use /var/run/utmp

注意到这句话,

$ man -k utmp

utmp (5) - login records

$ man 5 utmp

The utmp file allows one to discover information about who is currently using the system.

那肯定是他了,而且还提供了相应的结构体信息,当然我们也可以在/usr/include/下面找到标准头文件

到这里我们知道了只要读取utmp文件就可以了。那么如何读取文件信息呢?

很自然我们想到了 man -k file, 只要知道了用哪个命令就好了, 当然也可以google1

2

3

4

5

6

7

8$ man -k file | grep read

read (2) - read from a file descriptor

其中这一行引起了我们的注意。哈哈 皮卡丘就是你了。

$ man 2 read

ssize_t read(int fd, void *buf, size_t count);

文件描述符 缓冲区 字节数

通过阅读文档, 我们了解到read有3个参数,返回值是成功读取的字节数并讲读取的字节存入缓冲区。

那应该就是他了,但是文件描述符又是什么鬼?

我们继续往下看,在see also 里 我们看到有个open(2)1

2

3

4$ man 2 open

int open(const char *pathname, int flags);

路径 进入模式: 只读,只写,读写

返回值是文件描述符。

那么,整理一下。open 打开文件, 返回文件描述符

read 根据文件描述符,读取文件内容,一次读取struct utmp 大小即可

输出到控制台

close 关闭文件1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35#include

#include

#include

#include

void (struct utmp * record);

int main()

{

struct utmp current_record;

int fd;

int len = sizeof(current_record);

if ((fd = open("/var/run/utmp", O_RDONLY)) == -1)

{

perror("/var/run/utmp");

exit(1);

}

while (read(fd, &current_record, len) == len)

{

show_record(&current_record);

}

close(fd);

exit(0);

}

void (struct utmp * record)

{

printf("%8s ", record->ut_user);

printf("%8s", record->ut_line);

printf("n");

}

恩 我们执行一下,1

2

3

4$ gcc test.c -o test

$ ./test

reboot ~

kcilcarus tty1

基本上可以了,不过reboot是啥,时间也没有,有空了在优化下。

那么,一个简单的who命令就到此结束啦~

linux命令编写,编写简单的linux命令相关推荐

  1. 编写一个简单的linux kernel rootkit

    一.前言 linux kernel rootkit跟普通的应用层rootkit个人感觉不大,个人感觉区别在于一个运行在用户空间中,一个运行在内核空间中:另一个则是编写时调用的API跟应用层rootki ...

  2. linux简单命令题目,一些简单的linux习题(可做复习用)一

    1.简述Linux的优点: 答: Linux是一个多用户多任务操作系统,每个用户对自己的资源有特定的权限,互不影响.每个用户还可以同时执行多个程序,各个程序的运行互相独立. Linux为用户提供了直观 ...

  3. Linux下的一些简单网络配置命令介绍

    1. ifconfig 可以使用ifconfig命令来配置并查看网络接口的配置情况. 例如: (1) 配置eth0的IP地址, 同时激活该设备. #ifconfig eth0 192.168.1.10 ...

  4. linux串口上网的简单实现,Linux串口上网的简单实现(3)

    方法rebuild_header().Linux2.x使用的rebuild_header()例程在本文的附加源程序中,这里不再说明. 编写用户空间串口通信程序 控制串口的server应用程序完成非常简 ...

  5. ldd命令 ubuntu_技术|简单介绍 ldd 命令

    如果您的工作涉及到 Linux 中的可执行文件和共享库的知识,则需要了解几种命令行工具.其中之一是 ldd ,您可以使用它来访问共享对象依赖关系.在本教程中,我们将使用一些易于理解的示例来讨论此实用程 ...

  6. linux 工业 网络协议,简单了解Linux TCP/IP协议栈

    什么是TCP/IP协议? TCP/IP是互联网相关各类协议族的总称.计算机与网络设备之间如果要相互通信,双方就必须基于相同的方法.比如,如何探测到通信目标.由哪一边先发起通信.使用哪种语言进行通信.怎 ...

  7. bt5重启网卡命令_BackTrack 5 简单网络配置命令

    自动获取IP dhclient eth1 临时设置ip地址 ifconfig eth0 192.168.1.112/24 设置IP和子网掩码 route add default gw 192.168. ...

  8. linux 解压缩后没权限,Linux的权限管理及基础常用命令

    chmod  改变文件或目录权限 英语原意:change the permissions mode of a file 语法:1.chmod[ugoa][+-=][rwx][文件或目录] 执行权限:文 ...

  9. linux目录规范及简单说明

    Linux系统目录结构以及简单说明 linux目录图: / root --- 启动Linux时使用的一些核心文件.如操作系统内核.引导程序Grub等. home --- 存储普通用户的个人文件 ftp ...

最新文章

  1. 23. matlab并行计算原理以及parpool函数
  2. 入职第一天,老板竟然让我优化5亿数据量,要凉凉?
  3. 面向对象与面向过程区别
  4. chrome浏览器本地文件支持ajax请求的解决方法
  5. STM32启动文件详解及SystemInit函数分析
  6. zz 写科技论文的一点体会
  7. 河南工业大学计算机网络技术,河南工业大学2019年硕士研究生入学信息科学与工程学院计算机网络自命题考试大纲...
  8. Android高效加载大图、多图解决方案_LruCache,有效避免程序OOM
  9. 【系统架构设计师】2020-08-06
  10. 华为鸿蒙系统学习笔记11-鸿蒙(HarmonyOS)2.0方舟编译器官方网址开源地址
  11. w10自动删除文件怎么关了_清理win10系统垃圾方法,自动更新文件删除介绍
  12. 前端干货:教你轻松去除inline-block元素空隙
  13. java里面的内存机制_Stack vs. Heap:了解 Java 的内存分配机制
  14. MATLAB计算不定积分与定积分
  15. python停用词_python利用jieba分词进行分词,去停止词(停用词)。
  16. 刚办的电信卡显示无服务器,刚刚买的电信卡怎么不能用说什么只限紧急呼叫
  17. html中的字体怎么选择,网页开发中如何选取合适且统一的字体
  18. 漆学军:均线交叉,金叉做多,死叉做空的例子程序
  19. SQL Server2008R2中文版安装教程
  20. linux 脚本录制软件,linux下运行脚本蜀门录制

热门文章

  1. linux基本安全配置手册
  2. 重温Observer模式--热水器·改(转载)
  3. Windows XP SP3?转自作者: 孤单的鸽子,  出处:天极yesky, 责任编辑: 袁绍龙
  4. 前端 crypto-js aes 加解密
  5. 网络传输层之TCP、UDP详解
  6. C#面向对象设计模式第九讲:Composite 组合模式(结构型模式)
  7. 怎样和客户一起搞定需求
  8. 一文带你吃透Vue生命周期(结合案例通俗易懂)
  9. Express 入门之Router - worldtree_keeper的专栏 - CSDN博客
  10. 智能时代 软件赋能——2017中国软件技术大会