Linux
52coder
道貌何其深,岸然唯我真
展开
-
ps -ef 输出结果的具体含义
ps [选项] 下面对命令选项进行说明: -e 显示所有进程。 -f 全格式。 -h 不显示标题。 -l 长格式。 -w 宽输出。 a 显示终端上的所有进程,包括其他用户的进程。 r 只显示正在运行的进程。 u 以用户为主的格式来显示程序状况。 x 显示所有程序,不以终端机来区分。ps -ef 显示出的结果: 1.UID原创 2017-12-07 12:00:23 · 2098 阅读 · 0 评论 -
ssh连接ubuntu虚拟机
在mac中通过parallels在线下载ubuntu安装之后,通过已创建的用户登录进系统切换到root却发现root密码不对,应该做如下设置: 1、先用安装时候的用户登录进入系统 2、输入:sudo passwd 按回车 3、输入新密码,重复输入密码,最后提示passwd:password updated sucessfully 此时已完成root密码的设置,操作示例如下图所示,下图中设置原创 2017-12-09 10:38:34 · 1730 阅读 · 0 评论 -
分析C语言声明
在阅读Liunx/UNIX系统编程手册一书在阅读到第20章时遇到函数signal()的声明时完全不懂这个函数是什么意思,于是网上搜索,有几个帖子里面介绍的方法是《C专家编程》一书第三章中相关内容,本文就是为了弄懂函数signal()的声明。 在阅读了本章内容后,我尝试用自己的语言来解释函数signal()的声明,如果有幸有朋友看到,希望可以批评指正。 首先介绍signal()函数声明前先了解函数原创 2017-11-15 01:15:05 · 337 阅读 · 0 评论 -
C函数指针基础
函数指针可以像一般函数一样,用于调用函数、传递参数。在如 C 这样的语言中,通过提供一个简单的选取、执行函数的方法,函数指针可以简化代码。 函数指针只能指向具有特定特征的函数。因而所有被同一指针运用的函数必须具有相同的参数和返回类型。 一个简单的例子:#include <stdio.h>// 函数原型void sayHello();//函数实现void sayHello(){ pr原创 2017-11-15 00:33:26 · 275 阅读 · 0 评论 -
排序算法总结
排序就是将一组对象按照某种逻辑顺序重新排列的过程,本文是记录学习排序的总结,持续更新,计划一周时间,视工作忙与否而定。选择排序算法思路: 首先找到数组中的最小元素,其次将它和数组的第一个元素交换位置。再次在剩下的元素中找到最小元素,将它与数组的第二个元素交换位置。如此反复,直到将整个数组排序。 算法实现:#include <stdio.h>void SelectionSort(int a[],原创 2017-11-14 00:07:50 · 342 阅读 · 0 评论 -
算法概论
本文是算法概论读书笔记,算法概论这本书在豆瓣评分高达9分,在收到学弟寄来的这本书我随手翻了几页就被书中所述内容所吸引,因此本文持续记录书中对于我来说比较有意思又或者我之前理解不深刻或错误的地方。序言序言部分从费波那奇数列介绍开始,引入费波那奇数列的递归实现,接着分析递归实现算法慢的原因,因为很多求解步骤都是重复的。一种更合理的机制是随时存储中间计算结果。 C语言实现:#include <stdio原创 2017-11-14 00:06:34 · 2111 阅读 · 0 评论 -
TLPI-Chapter 20 信号
基本概念信号是事件发生时对进程的通知机制。有时也称为软件中断,信号与硬件中断相似之处在于打断了程序执行的正常流程,大多数情况下,无法预测信号到达的精确时间。 一个具有合适权限的进程能够向另一进程发送信号,信号的这一用法可作为一种同步技术,甚至是进程通信IPC的原始形式。进程也可以向自身发送信号。然而发往进程的诸多信号,通常都是源于内核。 引发内核为进程产生信号的各类事件如下: 硬件发生异常:硬原创 2017-11-18 17:12:25 · 415 阅读 · 0 评论 -
指针数组与数组指针
指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针 数组指针:a pointer to an array,即指向数组的指针 还要注意的是他们用法的区别,下面举例说明。 int* a[4] 指针数组 表示:数组a中的元素都为int型指针 元素表示:a[i] (a[i])是一样的,因为[]优先级高于*int (*a)[4] 数组指针 表原创 2017-11-18 17:10:49 · 308 阅读 · 0 评论 -
Linux命令行大全总结(下)
本文是Linux命令行大全这本书第12章之后的阅读笔记部分。VI简介数字0 跳转至本行开头 Shift + 4 跳转至本行末尾 Shift + G 跳转至文件最后一行 dd 删除当前行 5dd 删除当前行和之后的4行 dG 删除当前行到文件末尾 d20G 删除从当前行至20原创 2017-10-25 23:42:00 · 387 阅读 · 0 评论 -
TLPI-Chapter 11系统限制和选项
关于系统限制C语言标准和SUSv3提供了两种方法: 1.在编译程序时能够获得一些限制和选项。 2.一些限制在程序运行时可能会发生变化。对此SUSv3定义了3个函数sysconf() pathconf()和fpathconf(),供应用程序调用以检查系统实现的限制和选项。 SUSv3将其规定的限制归为三类: 运行时恒定值 路径名变量值 运行时可增加值 在shell中,可以使用getco原创 2017-10-25 00:51:46 · 797 阅读 · 0 评论 -
TLPI-Chapter 10 时间
日历时间Calendat TimeUNIX系统内部对时间的表示均是以自1970年1月1日的零点以来的秒数来度量。日历时间存储与类型time_t的变量中,此类型是由SUSv3定义的整数类型。 系统调用gettimeofday(),可于tv指向的缓冲区中返回日历时间。#include <sys/time.h>int gettimeofday(struct timeval *tv, struct ti原创 2017-10-24 00:10:18 · 302 阅读 · 0 评论 -
TLPI-Chapter 9 进程凭证
这一章开始看的有点懵,在网上搜索到一篇文章有助于理解链接地址Set-User-ID 1.每个进程都有一套用数字表示的用户ID和组ID。具体有实际用户ID(real user ID), 实际组ID(real group ID),有效用户ID(effective user ID),有效组ID(effective group ID),保存的set-user-ID和set-group-ID,文件系统用户I原创 2017-10-22 15:25:55 · 706 阅读 · 0 评论 -
TLPI-Chapter 13文件I/O缓冲
函数:void *memalign(size_t alignment, size_t size); The obsolete function memalign() allocates size bytes and returns a pointer to the allocated memory. The memory address will be a multiple of alignment原创 2017-10-29 18:03:29 · 319 阅读 · 0 评论 -
旋转字符串
题目描述 给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符’a’和’b’移动到字符串的尾部,使得原字符串变成字符串“cdefab”。请写一个函数完成此功能,要求对长度为n的字符串操作的时间复杂度为 O(n),空间复杂度为 O(1)。暴力移位法初看此题,可能最先想到的方法是按照题目所要求的,把需要移动的字符一个一个地移动到字符串的尾部,如此我们原创 2017-10-29 01:31:36 · 394 阅读 · 0 评论 -
[CSAPP]计算机系统漫游
深入理解计算机系统这本书在豆瓣评分竟罕见的到了9.9分! 目前在读第三版,已读完前两章,补充在阅读过程中的笔记部分,如有任何疑问请评论指出。 本系列读书笔记不会记录全部内容,只是记录与实战相关、存在疑惑的部分,个人认为本书中的每一段话每一个字都很重要!信息=位+上下文#include <stdio.h>int main(){ printf("Hello,world\n");原创 2017-12-09 11:18:52 · 288 阅读 · 0 评论 -
[CSAPP]信息的表示和处理
第二章信息的表示和处理主要研究三种最重要的数字表示: 1)无符号(unsigned)编码基于传统的二进制表示法,表示大于或者等于零的数 2)补码(two’s-complement)编码是表示有符号数的最常见的方式,有符号整数就是可以为正或负的数字 3)浮点数(floating-point)编码是表示实数的科学计数法的以2位基数的版本。 浮点运算是不可结合的,例如在多数机器上表达式(3.14+原创 2017-12-10 12:09:34 · 492 阅读 · 0 评论 -
svn:工作副本已锁定解决方法
使用svn过程中恰好遇到服务器重启或者服务器有其它问题时,如下图所示: 再去update 或者commit时提示工作副本已锁定,如下图所示: 解决方法是在代码目录中右键选择clean up原创 2017-12-01 15:33:00 · 2151 阅读 · 1 评论 -
替换空格
请实现一个函数,把字符串中的每个空格替换成”%20”。例如输入“We are happy.”, 则输出”We%20are%20happy.”。 在网络编程中,如果URL参数中含有特殊字符,如空格、’#’等,可能导致服务器端无法获得正确的参数值。我们需要将这些特殊符号转换成服务器可以识别的字符。转换的规则是在’%’后面跟上ASCII码的两位十六进制的表示。比如空格的ASCII码是32,即十六进制的0原创 2017-12-24 20:43:21 · 474 阅读 · 0 评论 -
二维数组中的查找
题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。分析: 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15从二维数组最右上角的数值(9)开始比较,若目标比该数大,则目标肯定在该数的下方,反之原创 2017-12-24 20:42:25 · 400 阅读 · 0 评论 -
实现who命令
在看了《Linux/UNIX系统编程手册》和APUE前几章之后发现缺少相应的实践,如果只是单纯的了解API并没有太大意义,因此决定跟随《UNIX/Linux编程实践教程》将书中的例子调通与理解透。然后再去啃APUE,效果应该会好很多。 书中第二章给出了who实现的,由于书写与2004年,代码看上去有些“另类”,对于编译过程中发现的问题进行修改,在讲解代码前先记录如下用法: grep -r命令 -原创 2017-12-24 20:41:33 · 551 阅读 · 0 评论 -
实现more命令
在看了《Linux/UNIX系统编程手册》和APUE前几章之后发现缺少相应的实践,如果只是单纯的了解API并没有太大意义,因此决定跟随《UNIX/Linux编程实践教程》将书中的例子调通与理解透。然后再去啃APUE,效果应该会好很多。 书中第一章给出了more实现的第一版,由于书写与2004年,代码看上去有些“另类”,修改后如下: 编译方法是直接使用gcc more01.c,然后./a.out原创 2017-12-24 20:40:39 · 767 阅读 · 0 评论 -
[APUE]第四章文件和目录
本章内容较多,本文只记录在学习过程中所发现的问题,同时记录所需掌握的Linux方面知识.文件类型普通文件 目录文件 块特殊文件 字符特殊文件 FIFO 套接字 符号链接 这里要介绍下dos2unix命令,刚好前几天在工作中有所接触。 dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter原创 2017-12-06 23:53:34 · 254 阅读 · 0 评论 -
source insight崩溃解决方法
当C:\Users\hp\AppData\Local\Temp\目录创建以TFX开头的临时文件过多,造成无法在这个目录创建以TFX开头的临时文件,会造成 source insight的崩溃,因为source insight对创建得到的临时文件句柄的有效性未做任何检测。 解决办法:删除C:\Users\hp\AppData\Local\Temp\目录下以TFX开头的所有临时文件。如果找不到这个文件夹,原创 2017-12-06 15:15:30 · 11524 阅读 · 4 评论 -
shell脚本判断文件是否存在
有一个需求是判断某一个目录下文件是否存在,如果该文件不存在,则从当前目录拷贝文件到该目录。 由于没有学习写过shell脚本,晚上下班回来搜索后写出了如下的脚本,这里shell的if语法格式与C语言大致相同,语法格式: if [ 条件 ]; then 条件成立 else 条件不成立 fi fi是结束if语句。version1.0#!/bin/shmyFile="/原创 2017-12-14 23:01:12 · 41148 阅读 · 1 评论 -
[APUE]第三章文件I/O
Unix系统中大多数文件I/O只需用到五个函数:open、read、write、lseek、close。本章介绍的I/O是不带缓冲的,即:每个read和write都调用内核中的一个系统调用。它们不是ISO C的组成部分。 对于内核而言,所有打开的文件都通过文件描述符引用; 当打开或创建文件时,内核向进程返回一个文件描述符; 读写文件时,文件描述符将作为read和write的参数。 在 uni原创 2017-11-26 01:03:40 · 390 阅读 · 0 评论 -
[APUE]第二章UNIX标准及实现
这一章的阅读相对枯燥,20世纪80年代UNIX版本种类剧增以及他们之间的差别的扩大,导致很多用户呼吁对其进行标准化。 UNIX标准化介绍了ISO C IEEE POSIX Single UNIX Specification FIPS,这部分内容不详细总结。 UNIX系统实现介绍了 SVR4 4.4BSD Free BSD Linux Mac OSX Solaris. UNIX系原创 2017-11-25 22:14:11 · 369 阅读 · 0 评论 -
[apue]UNIX高级环境编程ver3勘误表[持续更新]
本文记录在阅读《UNIX环境高级编程》第三版过程中发现的错误,写这篇文章时阅读到第三章文件I/0. 本书是被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的更新版。在本书第1版出版后的十几年中,UNIX行业已经有了巨大的变化,特别是影响UNIX编程接口的有关标准变化很大。本书在保持了前一版风格的基础上,根据最新的标准对内容进行原创 2017-11-25 18:53:45 · 516 阅读 · 0 评论 -
Mac下10大常用快捷键
本文记录Mac下10大常用快捷键,来源于10个你不知道的Mac键盘快捷方式小窍门 一option + wifi图标 可以查看链接的wifi信息等,在网络出问题时可以方便打开无线诊断。 二音量键 option + shifit+音量调节键(F11 F12) 更小粒度的音量调节 三截屏 自定义区域:command+shift+4 全屏:command+shift+3 四command+原创 2017-12-04 08:35:01 · 6743 阅读 · 0 评论 -
[APUE]第一章UNIX基础知识总结
UNIX简介操作系统的狭义定义,是将操作系统定义为一种控制计算机资源,提供程序运行环境的软件,通常我们称之为内核,内核提供接口供上层应用调用,也叫做System Call(系统调用)。同时,为了方便应用程序使用内核,通常都会有公用函数库,应用程序既可以使用系统调用,也可以使用公用函数库。系统调用和公用函数库实际上并不是同一个东西,但是对于开发者来说,可以当作同一个层,都可以使用C函数来调用。再向上,原创 2017-11-23 00:19:03 · 303 阅读 · 0 评论 -
Ubuntu修改系统的默认启动级别
修改默认启动级别假设现在在图形用户界面,打开终端,输入如下命令: sudo systemctl set-default multi-user.target 然后输入reboot命令重启:假设现在在图形用户界面,打开终端,输入如下命令: sudo systemctl set-default multi-user.target 然后输入reboot命令重启。 系统重启后,就会自动进入命令行界面原创 2017-11-28 00:20:17 · 3467 阅读 · 0 评论 -
Linux命令行大全总结(一)
阅读Linux/UNIX系统编程闲暇之余阅读Linux命令行大全这本书,想起当初毕业同学送给我时的场景,书很新,新到什么程度呢,我说这书时昨天刚买的都没毛病。 本篇博客只记录一些印象不太深刻的内容,相对较简单或对我来说比较熟练的,不再记录. shell是一个接受由键盘输入的命令,并将其传递给操作系统来执行的程序。bash是Bourne Again Shell的首字母缩写,Bourne Again原创 2017-10-12 00:47:46 · 14232 阅读 · 0 评论 -
关于 Markdown
Markdown 会被解释为一种 “标记语法”,实际上,可以不用去理解这种看似晦涩的意思。 Markdown 接近于普通文本,另外再由少数几个语法规则描述文本结构的一种约定方式;而且花很少的时间,就能很容易掌握的技巧。 换一种说法,Markdown 是给专注于“偷懒”,却不牺牲最终产出的人群使用的。基本语法标题# 一级标题## 二级标题### 三级标题#### 四级标题####原创 2017-10-27 00:11:45 · 252 阅读 · 0 评论 -
C语言宏的高级用法
总结一下C语言中宏的一些特殊用法和几个容易出错的地方。由于本文主要参考GCC文档,某些细节在别的编译器可能有细微差别。宏基础宏仅仅是在C预处理阶段的一种文本替换工具,编译完之后对二进制代码不可见。基本用法如下:标示符别名#define BUFFER_SIZE 1024预处理阶段,foo = (char *) malloc (BUFFER_SIZE);会被替换成fo转载 2017-09-26 08:24:13 · 788 阅读 · 0 评论 -
GDB调试基本使用方法
文章转载自coolshell.cn,对相关内容根据自己理解有改动,原文请访问作者博客.GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成转载 2017-09-26 08:22:18 · 359 阅读 · 0 评论 -
Linux内核链表总结
本文参考内核代码2.6.9 List.h中相关代码,如有疑问欢迎评论.链表链表是线性表的一种,可以高效地在链表中的任意位置实时插入、删除数据。链表的开销主要是访问的顺序性和组织链的空间损失.通常链表数据结构至少应包含两个域:数据域和指针域,数据域用于存储数据,指针域用于建立与下一个节点的联系。内核代码2.6.9中链表结构定义如下:struct list_head {原创 2017-09-26 00:54:54 · 307 阅读 · 0 评论 -
编程练习
描述编写这样一个程序:接收来自标准输入的n条指令,指令有如下三种:a 后面跟一个整数,表示向集合插入一个数 d 后面跟一个整数,表示从集合删除一个数,集合中有多个指定数时,删除一个即可p 从小到大打印出集合中的数输入每行输入一条指令,注意指令可能不符合规范,整数可能超出C语言长整形范围,可能带符号,但长度不会超过100输出当输入指令为p时,从小到大输出集合中的数,当原创 2017-09-26 00:53:04 · 467 阅读 · 2 评论 -
指针二三事
有同事今天问我一个指针的问题,没深究原因,下班回来静下心来分析分析,写下这篇文章,如有任何疑问请留言.问题一要实现一个函数,我们姑且理解成函数内部 malloc申请一块内存,然后针对这块内存做一系列操作,操作这部分姑且不用实现,我们要返回申请的这片内存的地址.version 1如果你拿到这个问题就立刻编写代码的话极有可能这么写:/* Name: 二级指针 C原创 2017-09-26 00:49:55 · 198 阅读 · 0 评论 -
细说指针
因为在工作中踩到了指针相关的坑,所以在这里记录下来问题产生的原因,以免再次遇到同样的错误。如果你对文章中的观点、内容存在不一样的看法,欢迎通过关于博主页面中的Email与我联系。需求:将代码提取成函数,代码如下:```mr_cfg_bsc_info_t *mir_list = NULL;mir_list在主函数中是一级指针的形式,我提取函数时接口用了二级指针如下原创 2017-09-26 00:21:24 · 228 阅读 · 0 评论 -
关于作者
在CSDN上发布自己学习工作生活中遇到的问题,记录相关解决方法,如果能帮助到有需要的人我会万分高兴。因为我在工作中遇到了问题,查询中会优先参考CSDN,CSDN的博文帮助我解决了很多问题,在此感谢各位。我的个人博客地址是52coder.net,如果关于文章有任何疑问欢迎留言讨论。关于我:一个半路出家的IT从业人员,一个后知后觉的IT技术人员,现在努力,希望还不晚.目前主原创 2017-08-21 11:53:04 · 320 阅读 · 0 评论 -
TLPI-Chapter 4文件IO
所有执行I/O操作的系统调用都以文件描述符(一个非负整数)来指代打开的文件。文件描述符用以表示所有类型的已打开文件,包括管道、FIFO、socket、终端、设备、普通文件。它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。每个进程,文件描述符都自成一套。 三种标准的文件描述符: 0 标准输入 1 标准原创 2017-09-25 08:30:43 · 434 阅读 · 0 评论