Unix/Linux编程实践教程
小川先生
A C development.
展开
-
Unix/Linux编程实践教程–cp在OS X的实现
环境:OS X 10.12.4 书中的代码对于OS X是适用的。值得提一嘴的是,其实OS X的open是可以在文件不存在的时候自动创建的,man 2 open时,就可以看到这个说明。 The oflag argument may indicate that the file is to be created if it does not exist (by specifying the O原创 2017-05-30 23:00:54 · 426 阅读 · 0 评论 -
Unix/Linux编程实践教程–od在OS X的实现
环境:OS X 10.12.4抱歉,本文章并不是关于Ollydbg的实现(笑)。照旧man 1 od。od 是一个能把指定的文件或者标准输入按照用户定义的格式打印。( The od utility is a filter which displays the specified files, or standard input if no files are specified, in a use原创 2017-06-15 14:40:02 · 570 阅读 · 0 评论 -
Unix/Linux编程实践教程–tail在OS X的实现
环境:OS X 10.12.4tail和head的作用刚好相反,读出文件的最后n行。这个看起来好像比较简单,但是还是有很多需要考量的。大致考虑了下,我得出了三个方案。Plan A从头开始读,记录下每一个换行符的位置(定义一个变量记录了目前移动了几次),遇到EOF时,比如目前的换行符的个数为x,那么从第x - ( n - 1)个换行符的下一个字符开始打印至EOF即可。优点 可以使用缓存,减少系统调用。原创 2017-06-14 18:22:47 · 701 阅读 · 0 评论 -
Unix/Linux编程实践教程–chmod在Centos7.3的实现
环境:centos 7.3 x86_64如果搜一下man就会发现,里面有两个chmod,一个是chmod(1),一个是chmod(2)。根据牛顿-莱布尼兹公式,立即推,第一个是用户命令,第二个是系统调用。系统调用里,函数的原型是这样的:int chmod(const char *pathname, mode_t mode);所以要实现的chmod命令,无非就是把用户的输入解释成对应的mode_t类型原创 2017-06-24 16:14:54 · 601 阅读 · 0 评论 -
Unix/Linux编程实践教程–head在OS X的实现
环境:OS X 10.12.4照例先看一下man page。HEAD(1) BSD General Commands Manual HEAD(1)NAME head -- display first lines of a fileSYNOPSIS head [-n count | -c bytes] [file原创 2017-06-09 17:36:52 · 595 阅读 · 0 评论 -
Unix/Linux编程实践教程–cat在OS X的实现
环境:OS X 10.12.4cat 这玩意儿在哪个Unix平台实现都一样吧- -cat这个程序是把参数中的文件名的文件内容输出到标准输出,如果参数中没有文件名,默认是把标准输入的内容输出到标准输出。这里使用了utmplib类似的代码用于缓存数据,减少系统调用的使用。代码: cat.c#include <stdio.h>void xc_open(char *aFName); void xc_clo原创 2017-06-08 19:09:38 · 613 阅读 · 0 评论 -
Unix/Linux编程实践教程–last在Ubuntu 14.04的实现
有了上篇关于ac的实现,对于这个last的实现过程就是很简单了。首先 man 1 last。描述中写着last looks through the file wtmp (which records all logins/logouts) and prints information about connect times of users.也就是还是读的wtmp这个文件。所以代码的实现就很简单了,我原创 2017-06-08 10:12:50 · 699 阅读 · 0 评论 -
Unix/Linux编程实践教程–ac在Ubuntu 14.04的实现
环境:Ubuntu 14.04 32位为什么这回不写在OS x上的实现了?因为OS X使用的是utmpx,然后我用getutxent_wtmp()这个函数也没有办法正确获取wtmp的日志信息,所以先在Ubuntu上实现好了。默认没有带ac这个程序,需要自行安装。(sudo apt-get insall acct)好的,开始我们的节目。man ac,可以看到ac是一个统计用户连接时长(以小时为单位)的原创 2017-06-07 14:56:55 · 804 阅读 · 0 评论 -
Unix/Linux编程实践教程--who在OS X的实现
环境:OS X 10.12.4 书中关于who程序的实现在我的OS X上好像跑不起来,首先看一下man who. WHO(1) BSD General Commands Manual WHO(1) NAME who -- display who is logged in SYNOPSIS wh原创 2017-05-30 22:59:41 · 659 阅读 · 1 评论 -
Unix/Linux编程实践教程–书评
花了两个月的时间把这本书读完了,完成了一部分的课后习题。总的来说,这是一本挺好的Unix\Linux编程的入门书(虽然书中的小错误一大堆),书的开始部分简要介绍了Unix系统编程,讲述了如何使用男人(man page),这也是我比较看好的,授人以渔,而不是授人以鱼。从实现简单的Unix命令开始到写游戏、shell、Web服务器。在实现的过程中先讲原理,然后穿插讲述了Unix的设计哲学、一些系统调用、原创 2017-07-25 11:32:54 · 1330 阅读 · 0 评论