
linux
文章平均质量分 81
雪不化花不开
这个作者很懒,什么都没留下…
展开
-
第九章:可编程的shell,shell变量和环境:编写自己的shell
0.摘要概念与技巧 -Unix shell 是一种编程语言 -什么是shell脚本语言? shell如何处理脚本语言? -shell如何处理结构化的工作?exit(0) = success -为什么需要shell变量以及如何使用shell变量 -什么是环境?它是如何工作的? 相关的系统调用 -exit -getenv 相关命令 -env1.shell编程#t原创 2018-01-07 11:10:30 · 314 阅读 · 0 评论 -
第八章 进程和程序:编写命令解释器sh
0.摘要概念与技巧 -Unix shell的功能 -Unix的进程模型 -如何执行一个程序 -如何创建一个进程 -父进程和子进程之间如何通信 相关的系统调用 -fork -exec -wait -exit 相关命令 -sh -ps1.什么是进程进程就是运行的程序.2.通过命令ps学习进程ps会列出当前运行的所有进程ls会列出当前目录下的文原创 2018-01-07 11:09:12 · 502 阅读 · 0 评论 -
git使用
git使用git init:初始化 git add <文件>:添加文件 git commit -m "<消息>":添加修改内容 git status : 检查不同 git diff: 具体不同内容 git log:显示最近到最远的提交 git log --pretty=oneline 可以只输出commit id 和提交内容判断 HEAD表示当前版本, 上一个版本是HEAD^,上上一原创 2018-02-02 10:53:19 · 175 阅读 · 0 评论 -
第十章 I/O重定向和管道
0.摘要概念与技巧 -I/O重定向:概念与原因 -标准输入,输出和标准错误的定义 -重定向标准I/O到文件 -使用fork来为其他程序重定向 -管道(Pipe) -创建管道后调用fork 相关的系统调用与函数 -dup,dup2 -pipe1.shell编程首先将介绍编写shell脚本时的I/O重定向和管道起的作用.然后,本章将介绍操作系统中对I/O重定向的支持.最后,写一个程序来原创 2018-01-10 20:58:26 · 449 阅读 · 0 评论 -
第十一章 连接到近端或远端的进程:服务器与Socket
0.摘要概念和技巧 -客户/服务器模型 -用管道来双向通信 -协同进程(coroutines) -文件/进程的相似性 -什么是socket,为什么需要socket,如何使用socket -网路服务 -用socket编写客户/服务器程序 相关系统调用和函数 -fdopen -popen -socket -bind -listen -accept -connect1.一个简原创 2018-01-10 21:02:02 · 1014 阅读 · 0 评论 -
高并发网络编程之epoll详解
在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程序。在大数据、高并发、集群等一些名词唱得火热之年代,select和poll的用武之地越来越有限,风头已经被epoll占尽。本文便来介绍epoll的实现机制,并附带讲解一下select和poll。通过对比其不同的实现机制,真正理解为何epoll能实现高并发。select()和p...转载 2018-03-05 10:45:00 · 246 阅读 · 0 评论 -
我读过的最好的epoll讲解--转自”知乎“
首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。 不管是文件,还是套接字,还是管道,我们都可以把他们看作流。 之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数据,但是流中还没有数据,(典型的例子为,客户端要从socket读如数据,但是服务...转载 2018-03-05 19:23:49 · 72359 阅读 · 17 评论 -
cscope和ctags添加头文件的索引,查看系统库函数
写C语言代码的时候,有时候希望能查看系统库函数,比如memcpy是怎么实现的。 解决方法:sudo vi /etc/bash.bashrc 1写入:alias mkcscopefile='find `pwd` -name "*.[ch]" -o -name "*.cpp" > cscope.files' 112 alias mktag='ctags -R;cscope -bRq' ...转载 2018-03-06 13:31:46 · 1486 阅读 · 0 评论 -
linux下,write操作产生:Resource temporarily unavailable
第一点网上论述的很多,是由于设置了非阻塞的fd, 导致写操作资源还没有准备好,直接跳过当前写操作,继续执行.而我存在的问题是代码逻辑上的错误,导致了Resource temporarily unavailable出现.(注:逻辑上的问题可能导致意想不到的错误,所以代码上要严谨严谨再严谨).int writen2(int fd, const void* buff, size_t count...原创 2018-08-13 09:03:17 · 9797 阅读 · 0 评论 -
Mac下Vim: Caught deadly signal SEGV Vim: Finished.
博主在打开vim的时候出现了Vim: Caught deadly signal SEGV Vim: Finished.之前刚更新了vim的插件,应该是这里产生了问题,可以cat看一下.vimrc.进入插件存在的目录,博主在~/.vim/bundle下面的ycm出现了问题,直接把这个文件rm -rf即可。之后把.vimrc中删除插件的语句。先记下,之后再分析。...原创 2018-11-22 12:07:15 · 1665 阅读 · 0 评论 -
Vim的分屏功能
转自:https://fukun.org/archives/10171487.htmlVim的分屏功能分屏启动Vim使用大写的O参数来垂直分屏。 vim -On file1 file2 …使用小写的o参数来水平分屏。 vim -on file1 file2 …注释: n是数字,表示分成几个屏。启动Vim后进行分屏水转载 2018-01-05 20:03:11 · 219 阅读 · 0 评论 -
YCM(YouCompleteMe)不自动提示代码,逗号提示
现象我是在ubuntu16.04下安装的ycm,基本的安装过程往上很多,这里就不提了. 目前,主要用ycm来编写c语言的代码.ycm只提示自己输入的函数,变量,宏等.并不提示系统自带的库函数和宏. 但是,当点击点(.)再进行输入的时候,可以做到提示并补全代码.所以想应该是没有配置正确.解决google关键字ycm+dot得到了网页 https://github.com/Valloric/You原创 2018-01-03 23:39:31 · 6353 阅读 · 3 评论 -
C语言宏中"#"和"##"的用法
C语言宏中"#"和"##"的用法 在查看linux内核源码的过程中,遇到了许多宏,这里面有许多都涉及到"#"和"##",因此,在网上搜索了一些资料,整理如下:一、一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起. 用法: #include #include using namespace std; #define STR(s)转载 2017-12-27 15:15:46 · 3147 阅读 · 0 评论 -
ubuntu下gdb代码调试
1.什么是GDB?GDB全称是GNU Project Debugger,当程序执行时,让你可以进入到另一个程序的内部查看,或者当一个程序崩溃的时候它在做什么。GDB可以帮助你做如下四种主要的方面,来帮助你捕捉到bug:1.启动你的程序,指定可能影响你行为的事情(设定初始的一些变量)2.在特殊的条件的时候暂停你的程序执行(在端点的时候可以暂停,或者说是条件的暂停)3.当程序暂停的原创 2017-04-16 13:54:29 · 743 阅读 · 0 评论 -
Ubuntu16.04下配置YouCompleteMe
目的:想要在Ubuntu下跑实验,所以希望能够有类似于IDE那样的代码提示功能的软件,所以在Ubuntu下进行了配置,遇到了很多问题。需要工具:VundleVim YouCompleteMe1、安装VundleVim VundleVim能够为我们自动安装插件,并且为YouCompleteMe做必要的准备,具体方法可以见github: https://github.c原创 2017-04-16 13:54:24 · 3735 阅读 · 0 评论 -
出现链接错误的时候/usr/bin/ld: cannot find -lmsgpack
一周前出现的一个问题,想来周末总结,但是一晃,四五天,只是记录下了问题,问题却没有记录,说来也惭愧,虽然问题已经解决了,但是已经忘记了当时解决的方法。谢谢看,希望能表达自己最初的想法,和解决这类问题的思想吧。1.首先我考虑到是不是找不到.so文件,我就直接把文件放到/usr/lib/下面。ln-s /usr/lib/libstdc++.so.6 /usr/lib/libstdc原创 2017-04-22 09:04:50 · 1302 阅读 · 0 评论 -
vim下设置tab来实现C原因对齐
首先来的当前用户的主目录下$cd ~$vim .vimrc在.vimrc中添加set ts=4set expandtabset autoindent转载 2017-10-31 21:47:45 · 430 阅读 · 0 评论 -
C表达式((void (*)(void))0();
C表达式((void (*)(void))0();通过一步步来讲解: 没有参数和不返回值void f(void)定义一个指针没有参数和返回值void (*p)(void)定义一个仅有类型的指针(void(*))(void)定义一个强转类型(类型定义在括号内,跟着一个值)(void (*)(void))0到目前为止我们定义了一个由0强转成一个指向函数且返回值。这个转换时一个指针到函数的类型。(yo翻译 2017-11-17 22:13:45 · 1760 阅读 · 1 评论 -
undefined reference to `pthread_create'解决
正确编译多线程方法:gcc -pthread -o term term.c转载 2017-11-21 20:28:53 · 10977 阅读 · 5 评论 -
ubuntu下安装ctags和taglist
1.首先安装ctagssudo apt-get install ctags 关于ctags的使用在想要查看的文档下使用1.$ctags -R *(对所有文档进行-R(递归的查找))2.$vim -t tag (请吧tag替换为你想要查找的名称比如main)用#define定义的宏枚举型变量的值函数的定义、原型和声明名字空间(namespace)类型定义(typedefs)变原创 2017-04-16 13:54:27 · 4313 阅读 · 0 评论 -
Synopsys dc-2010-sp5-3安装过程(下)
点击open,选中Synopsys.lpd18.具体配置如下图,注意需要勾选Custom和UseDaemon和它下面的Custom.填入之前的硬件地址点击Generate生成License,检查HostId是否已经在文档中19.点击save保存名为synopsys.dat文件之后打开SynopsysSSS FeatureKeygen文件夹,开启终端,原创 2017-11-26 22:04:30 · 3911 阅读 · 24 评论 -
第5章 连接控制:学习stty
第5章 连接控制:学习stty0.摘要本章主要的概念与技巧 ·文件和设备相似之处 ·文件和设备不同之处 ·连接的属性 ·竞争和原子操作 ·控制设备驱动程序 ·流 相关的系统调用 ·fcntl,ioctl ·tcsetattr,tcgetattr 相关命令 ·stty ·write1.设备就像文件在Unix中,声卡,终端,鼠标等设备和磁盘文件是同一种对象。在Unix系统中,每个原创 2017-12-23 20:24:31 · 363 阅读 · 0 评论 -
Unix-linux编程实践教程
首先从用户的角度来看待目录。讲解对unix文件系统的内部的结构的抽象过程。从磁盘到磁道到分区到块序列之后到文件系统的三个部分的划分(超级块,i-node节点表,数据区域)。之后围绕着文件系统展开,系统如何创建文件,以及目录如何看到inode节点相同的情况。以cat为例来论述如何查找访问文件。原创 2017-12-17 20:16:29 · 1069 阅读 · 0 评论 -
vim在同一行,首尾切换
操作vim小技巧,行头和行尾切换:0是行首,$是行尾原创 2017-04-15 09:33:47 · 1327 阅读 · 0 评论