![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
叮咚你个头
完美之道, 不在无可增加, 而在无可删减。
展开
-
date(1)命令的简单实现
/******************************************************* Program: example for date(1) History: 2013/05/20 dingdong First*******************************************************/#include "apue.h"原创 2013-05-22 23:40:53 · 1207 阅读 · 0 评论 -
shell编程小笔记
1.大小写的转换: (1)使用tr命令,ex:tr [a-z] [A-Z]或者tr [A-Z] [a-z] (2)使用typeset命令,ex:typeset -u 变量名【小写变大写】,typeset -l 变量名【小写变大 写】2.高亮显示文件中的特定文字 sed s/current_string/$(tput smso)new_string$(tput r原创 2013-05-29 00:11:33 · 833 阅读 · 0 评论 -
likely()与unlikely()区别
likely()与unlikely()在2.6内核中,随处可见,那为什么要用它们?它们之间有什么区别呢?首先明确:if (likely(value))等价于if (value)if (likely(a>b)) {fun1();if (unlikely(value))等价于if (value)也就是说likely()和unlikely()从阅读和理解的角度是一转载 2013-10-03 09:29:02 · 1380 阅读 · 0 评论 -
迷你shell交互程序的实现
这个程序主要根据APUE里面的例子进行修改优化,增加了参数的读取执行功能。/********************************************************** Program: Read commands form stdin and excute them. History: 2013/04/08 dingdong First re原创 2013-06-07 23:38:47 · 1197 阅读 · 0 评论 -
shell实现菜单选择
output="Is today your birthay: "echo -e "\n"select menu_selections in Yes No Quitdo case $menu_selections in Yes) echo -e "\nHappy Birthday!\n" ;; No) echo -e "\nIt is someone's birtha原创 2013-06-07 23:31:05 · 2440 阅读 · 0 评论 -
shell实现旋转线
主要是利用echo配合\b退格,\c不换行来实现直线的原地旋转,可以用于程序的等待过程。#!/usr/bin/bash## SCRIPT: rotate_line# AUTHOR: dingdong# DATE: 2013/06/04# REV: 1.1.A ## PLATFORM: LINUX## PURPOSE: Show the roulette.##原创 2013-06-04 19:17:14 · 1362 阅读 · 0 评论 -
getopts函数简介
昨天在做code review的时候,看到函数getopt(),似乎没见过,狗狗之,大惊……发现原来自己干过N次愚蠢的事!!! 函数getopt()用来分析命令行参数(可怜的Sam啊……以前还傻愣愣的自己写命令行参数解析函数…I’m too simple…sometimes naive.),其函数原型和相关变量声明如下: #include unistd.转载 2013-06-02 20:45:08 · 1354 阅读 · 0 评论 -
I/O缓冲,strlen跟sizeof小分享
今天刚刚看了APUE的fork函数那里,让我对I/O的缓冲有了新的认知,有段代码如下,完整代码的功能是调用fork函数产生一个子进程,并输出全局变量跟自由变量的值,然后父进程再输出全局变量跟自由变量的值,其中write函数是不带缓冲的,而标准的I/O库是带缓冲的,所以当我们执行含有下列代码的程序时,write只会将数据写到标准输出一次(因为不带缓冲)。而print有两种情况了,第一种是交互方式的运原创 2013-05-27 11:23:34 · 914 阅读 · 0 评论 -
ls(1)命令的简单实现(一)
这个命令主要利用opendir函数读出DIR结构体,然后用readdir函数读出struct dirent结构体,最后利用dirent结构体里面的d_name来用lstat函数读出文件的各种属性,最后格式化输出,下面的代码主要实现了无参数的默认文件名输出,还有实现了带‘-l’参数的属性输出,目前只是实现了‘-l’参数,以后再努力实现其他参数。/***********************原创 2013-05-25 07:50:27 · 1362 阅读 · 0 评论 -
uname(1)的基本实现(C语言)
今天看《unix环境高级编程》里面的一道作业题,实现uname(1),所以自己就动手敲了代码,主要是利用uname函数返回一个结构的指针,然后一一解读结构指针的内容,这个实现还包括参数的配合,用户可以选择参数来输出想要的内容,还可以配合-h参数来输出帮助信息呢。这段代码虽然简单,但是完成后还是挺开心,突然就有个想法,以后要慢慢把Linux上的命令用C语言来实现,加油,我可以的。下面是代码:/*原创 2013-05-20 23:24:14 · 2069 阅读 · 0 评论 -
cp(1)命令的简单实现(一)
/****************************************************** Program: program to copy a file. History: 2013/05/25 dingdong First release******************************************************/#includ原创 2013-05-25 22:42:43 · 1298 阅读 · 0 评论 -
宏内核与微内核,Linux内核与Unix内核
操作系统内核可能是微内核,也可能是单内核(后者有时称之为宏内核Macrokernel)。按照类似封装的形式,这些术语定义如下:单内核:也称为宏内核。将内核从整体上作为一个大过程实现,并同时运行在一个单独的地址空间。所有的内核服务都在一个地址空间运行,相互之间直接调用函数,简单高效。微内核:功能被划分成独立的过程,过程间通过IPC进行通信。模块化程度高,一个服务失效不会影响另外一转载 2014-03-31 15:53:31 · 4636 阅读 · 0 评论