Unix/Linux
文章平均质量分 65
丿咫尺天涯
这个作者很懒,什么都没留下…
展开
-
项目常用的linux命令
ifconfig: 显示和设置网络的接口,可以打开或者关闭某一个网络接口。ex:::::ifconfig up /down eth0netstat: 显示网络状态,整个网络情况,显示socket,tcp,udp等的连接情况。ps -aus:显示瞬间进程的动态top:实时显示process的动态free: 显示内存的使用情况,包括实体内存,虚拟内存,共享内存区段route:查原创 2015-07-29 22:57:30 · 381 阅读 · 0 评论 -
unix环境高级编程(阅读笔记)-----信号以及signal函数
1.信号概念信号是软件中断,很多比较重要的应用程序都需要处理信号。信号提供了一种处理异步事件的方法。在有文件中,这些信号被定义为正整数。不存在信号为0的信号。很多条件可以产生信号:1.当用户按某些终端键时,引发终端产生的信号。在终端上按ctrl+c键,通常产生中断信号(SIGINT)。2.硬件异常产生信号:除数为0,无效的内存引用等等。这些条件由硬件检测到,并将其通知内核,然后原创 2016-05-11 21:31:54 · 719 阅读 · 0 评论 -
Unix环境高级编程(阅读笔记)----setjmp和longjmp函数使用详解
非局部跳转语句---setjmp和longjmp函数。非局部指的是,这不是由普通C语言goto,语句在一个函数内实施的跳转,而是在栈上跳过若干调用帧,返回到当前函数调用路径上的某一个函数中。#include Int setjmp(jmp_buf env); 返回值:若直接调用则返回0,若从longjmp调用返回则返回非0值Void longjmp(jmp_buf env,in转载 2016-05-12 21:35:07 · 386 阅读 · 0 评论 -
Unix环境高级编程(阅读笔记)----sigaction函数
sigaction函数的功能是检查或修改指定信号相关联的处理动作,此函数取代UNIX早期版本使用的signal函数。[cpp] view plain copy #include int sigaction(int signo, const struct sigaction *restrict act, struct sigaction转载 2016-05-12 16:43:58 · 386 阅读 · 0 评论 -
Unix环境高级编程(阅读笔记)----可靠信号
在产生信号时,内核通常在进程表中设置某一种形式的标志。当对信号采取了这种动作时,我们说向进程递送了一个信号。在信号产生和递送之间的时间间隔内,称信号是未决的。进程可以选用信号递送阻塞。如果为进程产生了一个选择为阻塞的信号,而且对该进程的动作是默认动作或捕捉该信号,则为该进程将次信号保持为未决状态,直到该进程(1)对此信号解除了阻塞,或者(2)将次信号的动作更改为忽略。内核在转载 2016-05-12 15:56:50 · 368 阅读 · 0 评论 -
Unix环境高级编程(阅读笔记)----信号集、信号屏蔽函数sigprocmask
信号屏蔽字是指一个进程中当前阻塞而不能够递送给该进程的信号集。信号集则是一个能表示多个信号的集合的一种数据类型,为sigset_t。与信号集设置相关的函数有如下几个:// 下列四个函数成功返回0,出错返回-1 int sigemptyset(sigset_t *set); int sigfillset(sigset_t *set); int sigadds原创 2016-05-12 15:48:53 · 667 阅读 · 0 评论 -
unix环境高级编程(阅读笔记)----线程同步
多个线程共享相同的内存时,需要确保每个线程看到一致的数据视图。1.互斥量可以通过使用pthread的互斥接口保护数据,确保同一时间只有一个线程访问数据,互斥量(mutex)从本质上说是一把锁,在访问共享资源前对互斥量进行枷锁,在访问完成后释放互斥量上的锁。对互斥量进行加锁后,任何其他试图再次对互斥量进行加锁的线程将被阻塞知道当前线程释放该互斥锁。如果释放互斥锁时有多个线程阻塞,所有转载 2016-05-03 16:51:07 · 458 阅读 · 0 评论 -
UNIX环境高级编程(阅读笔记)——线程属性
pthread_attr_t 的缺省属性值 1、初始化一个线程对象的属性 int pthread_attr_init(pthread_attr_t *attr); 返回值:若是成功返回0,否则返回错误的编号形 参: attr 指向一个线程属性的指针说 明:Posix线程中的线程属性pthread_attr_t主要包括scope属性、deta转载 2016-05-03 20:51:03 · 445 阅读 · 0 评论 -
UNIX环境高级编程(阅读笔记)---线程相关函数
线程汇总:1.#include线程头文件,链接出错是加上-lpthread,因为pthread不是Linux中默认的库。2.pthread_t pthread_self()返回自身的线程ID,C中输出可以指定格式%lu。3.int pthread_create(pthread_t * restricttidp,const pthread_attr_t * restrict a原创 2016-05-04 20:20:41 · 294 阅读 · 0 评论 -
UNIX环境高级编程(阅读笔记)---多线程信号
多线程信号1.默认情况下,信号将由主进程接收处理,就算信号处理函数是由子线程注册的 2. 每个线程均有自己的信号屏蔽字,可以使用sigprocmask函数来屏蔽某个线程对该信号的响应处理,仅留下需要处理该信号的线程来处理指定的信号。 3. 对某个信号处理函数,以程序执行时最后一次注册的处理函数为准,即在所有的线程里,同一个信号在任何线程里对该信号的处理一定相同 4. 可以使用pth原创 2016-05-10 14:58:56 · 763 阅读 · 0 评论 -
Linux下 undefined reference问题
最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误:(.text+0x13): undefined reference to `func' 关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。1. 链接时缺失了相关目标文件(.o)转载 2016-03-15 22:14:23 · 1167 阅读 · 0 评论 -
linux命令--------------uptime
uptime命令是用来查询linux系统负载的!用法:直接输入uptime即可.另外还有一个参数 -v(大写)是用来查询版本的[root@ localhost]$ uptime –V(大写) procps version 3.2.7以下显示输入uptime的信息:04:03:58 up 10 days, 13:19, 1 user原创 2015-08-21 10:40:41 · 326 阅读 · 0 评论 -
sed 简明教程
sed:Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器。能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上。还可以对原文件改动,但是不会再屏幕上返回结果。sed命令的语法格式:sed的命令格式: sed [option] 'sed command'filenamesed的脚本格式:sed [option]...转载 2015-09-06 09:01:18 · 301 阅读 · 0 评论 -
AWK 简明教程
之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符。要学AWK,就得提一提AWK的一本相当经典的书《The AWK Programming Language》,它在豆瓣上的评分是9.4分!在亚马逊上居然卖1022.30元。我在这里的教程并不想面面俱到,本文和转载 2015-09-06 08:59:27 · 341 阅读 · 0 评论 -
linux命令--------------top
Linux中的top命令显示系统上正在运行的进程。它是系统管理员最重要的工具之一。被广泛用于监视服务器的负载。在本篇中,我们会探索top命令的细节。top命令是一个交互命令。在运行top的时候还可以运行很多命令。我们也会探索这些命令。(译注:不同发行版的top命令在各种细节有不同,如果发现不同时,请读你的帮助手册和命令内的帮助。)1. Top 命令输出:首先,让我们了解一下输出。top原创 2015-08-05 15:14:25 · 415 阅读 · 0 评论 -
linux命令--------------free
解释一下Linux上free命令的输出。 下面是free的运行结果,一共有4行。为了方便说明,我加上了列号。这样可以把free的输出看成一个二维数组FO(Free Output)。例如:FO[2][1] = 24677460FO[3][2] = 10321516原创 2015-08-05 15:18:36 · 305 阅读 · 0 评论 -
Linux TCP/IP大合集
简单归纳:fd只是一个整数,在open时产生。起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp。文件描述符的操作(如: open)返回的是一个文件描述符,内核会在每个进程空间中维护一个文件描述符表, 所有打开的文件都将通过此表中的文件描述符来引用; 而流(如: fopen)返回的是一个FILE结构指针, FILE结构是包含有文件描述符的,FILE结构转载 2015-09-10 00:14:31 · 2785 阅读 · 0 评论 -
Unix环境高级编程(阅读笔记)----中断的系统调用,自动重启动的函数
早期的UNIX系统的一个特性是:如果进程在执行一个低速系统调用而阻塞期间捕捉到一个信号,该系统调用就被终端不再继续执行。该系统调用返回出错,其errno被设置为EINTR。为了支持这种特性,将系统调用分成两类:低速系统调用和其他系统调用。低速系统调用是可能会使进程永远阻塞的一类系统调用:1.在读某些类型的文件(管道,终端设备以及网络设备)时,如果数据并不存在则可能会使调用者永远阻塞原创 2016-05-11 22:38:46 · 907 阅读 · 0 评论 -
unix环境高级编程(阅读笔记)------signal函数与sigaction的区别
signal函数每次设置具体的信号处理函数(非SIG_IGN)只能生效一次,每次在进程响应处理信号时,随即将信号处理函数恢复为默认处理方式.所以如果想多次相同方式处理某个信号,通常的做法是,在响应函数开始,再次调用signal设置,如下图: int sig_int(); //My signal handler ... signal(SIGINT, sig_int)原创 2016-05-11 22:06:20 · 464 阅读 · 0 评论 -
linux 常用命令
who 谁在线netstat -a 网络联机ctrl+原创 2014-08-29 15:38:52 · 431 阅读 · 0 评论 -
基于select的服务端
* 1. 程序使用了一个数组fd,通信开始后把需要通信的多个socket描述符都放入此数组 * 2. 首先生成一个叫sock_fd的socket描述符,用于监听端口。 * 3. 将sock_fd和数组fd中不为0的描述符放入select将检查的集合fdsr。// select_server.c#include #include #include #include #转载 2016-05-31 10:58:54 · 1071 阅读 · 0 评论 -
简单的服务端与客户端通信代码
一、初级服务端代码,只实现了简单的连接和接收数据功能#include#include#include#include#include#include#include#include#define LISTEN_PORT 9999int main(void ){ int socket_fd,accept_fd; struct sockadd原创 2016-05-18 15:18:06 · 610 阅读 · 0 评论 -
Linux 技巧:让进程在后台可靠运行的几种方法
我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子, 您可以针对不同的场景选择不同的方式来处理这个问题。nohup/setsid/&场景:如果只是临时有一个命令需要长时间运行,什么方法能最简便的保证它在后台稳定运行呢?h转载 2016-04-22 16:45:49 · 278 阅读 · 0 评论 -
Linux Ctrl+z jobs bg fg使用及区别
Linux Ctrl+z jobs bg fg使用及区别 一、& 最经常被用到这个用在一个命令的最后,可以把这个命令放到后台执行二、ctrl + z可以将一个正在前台执行的命令放到后台,并且暂停三、jobs查看当前有多少在后台运行的命令四、fg将后台中的命令调至前台继续运行如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnu转载 2016-04-20 15:39:46 · 994 阅读 · 0 评论 -
vi快捷键全览
vii是“visual interface”的缩写,是linux系统中一款强大的编辑器。第一部份:一般模式可用的按钮说明,光标移动、复制贴上、搜寻取代等移动光标的方法h 或 向左箭头键(←)光标向左移动一个字符j 或 向下箭头键(↓)光标向下移动一个字符k 或 向上箭头键(↑)光标向上移动一个字转载 2016-01-10 17:29:45 · 548 阅读 · 0 评论 -
Unix环境高级编程(阅读笔记)-----kill、raise、alarm、pause函数
kill函数将信号发送给进程或者进程组,raise函数则运行进程向自身发送信号。1. #include 2. int kill(pid_t pid,int signo); 3. int raise(int signo); 4. //若成功,则返回0,出错则返回-1. 使用alarm函数可以执行一个计时器,在将来某个指定的时间该计时器会超时。当计时器超时转载 2016-05-12 16:15:24 · 494 阅读 · 0 评论 -
vimtutor中文版
================================================================================ 欢 迎 阅 读 《 V I M 教 程 》 —— 版本 1.5 ===================================================转载 2016-05-16 19:53:24 · 387 阅读 · 0 评论 -
文件I/O
文件I/O1. open函数int open(const char* path,int oflag)oflag参数包括O_RDONLY,O_WRONLY,O_RDWR,O_EXEC,O_SEARCH2. lseek函数off_t lseek(int fd,off_t offset,int whence)每个打开文件都有一个与其相关联的”当前文件偏移量”原创 2016-05-16 15:29:23 · 259 阅读 · 0 评论 -
孤儿进程与僵尸进程
1、前言 之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧。晚上回来google了一下,再次参考APUE,认真总结一下,加深理解。2、基本概念 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的转载 2015-07-24 16:30:56 · 307 阅读 · 0 评论 -
vim配置文件
1.配置文件位置centos在etc/vimrc2.个性化设置setnu // 在左侧行号set tabstop =4 //tab长度设置为 4setnobackup //覆盖文件时不备份setcursorline //突出显示当前行setru原创 2016-05-04 12:01:38 · 286 阅读 · 0 评论 -
C中不能省略形参名字
一、C与C++的细微区别在函数声明中:无论是C还是在C++,都可以省略形式参数名。但是,通常都不建议省略形式参数名。在函数定义中:1. 当需要使用形式参数的时候,显然,必须给形式参数命名。2. 当不需要使用形式参数的时候,C与C++有微小差异:—— C不能省略形式参数名, 即使不使用。—— C++可以省略形式参数名,如果不使用。—— 并且在C++中,转载 2016-05-04 10:41:29 · 6712 阅读 · 0 评论 -
关键字 restrict
c99中新增加了一个类型定义,就是restrict。看了下网上的相关贴子,但还是问题解决的不够。下面是相关一个文章,我将在后面再加相关说明:那么restrict的意义是什么呢?概括的说,关键字restrict只用于限定指针;该关键字用于告知编译器,所有修改该指针所指向内容的操作全部都是基于(base on)该指针的,即不存在其它进行修改操作的途径;这样的后果是帮助编译器进行更好转载 2016-05-04 09:59:19 · 476 阅读 · 0 评论 -
linux进程状态详解
Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。Linux进程状态:R (TASK_RUNNING),可执行状态。只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个CPU的可转载 2016-04-19 21:37:52 · 6015 阅读 · 0 评论 -
Linux下undefined reference to ‘pthread_create’问题解决
接触了Linux系统编程中的线程编程模块,可gcc sample.c(习惯把书上的sample代码写进sample.c文件中)出现“undefined reference to ‘pthread_create’”,所有关于线程的函数都会有此错误,导致无法编译通过。问题的原因:pthread不是Linux下的默认的库,也就是在链接的时候,无法找到phread库中哥函数的入口地址,于是链接会失转载 2016-05-03 21:48:19 · 2891 阅读 · 0 评论 -
Unix环境高级编程(阅读笔记)----sigsuspend函数
更改进程的信号屏蔽字可以阻塞所选择的信号,或解除对它们的阻塞,使用这种技术可以保护不希望由信号中断的代码临界区。1)头文件:#include 2)一个保护临界区代码的错误实例:(sigprocmask()和pause()实现)#include #include #include void handler(int sig) //信号处理函数的实现转载 2016-05-14 10:58:45 · 402 阅读 · 0 评论 -
精华] 跟我一起写 Makefile
精华] 跟我一起写 Makefile概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解转载 2015-09-02 09:14:06 · 437 阅读 · 0 评论 -
exit()与_exit()的区别
从图中可以看出,_exit 函数的作用是:直接使进程停止运行,清除其使用的内存空间,并清除其在内核的各种数据结构;exit 函数则在这些基础上做了一些小动作,在执行退出之前还加了若干道工序。exit() 函数与 _exit() 函数的最大区别在于exit()函数在调用exit 系统调用前要检查文件的打开情况,把文件缓冲区中的内容写回文件。也就是图中的“清理I/O缓冲”。 所需头文件: e转载 2015-09-03 18:50:59 · 273 阅读 · 0 评论 -
linux命令--------------netstat
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行netstat后,其输出结果为Active Internet connections (w/o servers)Proto Recv-Q S原创 2015-09-02 09:40:31 · 253 阅读 · 0 评论 -
Linux内核进程切换
Linux内核进程切换 本文主要参考了Understanding The LinuxKernel 和水木精华区的分析进程切换宏 switch_to 。感谢相关的作者!本文中有部分内容直接从上面提到的文章中重复,仅仅是为了方便大家阅读。本文中提到的所有内核代码可以到LinuxCross Reference上查阅。欢迎转载本文,转载请保留这份声明。 本文仅讨论内核进程的切换,而不涉及进转载 2015-07-27 16:55:29 · 438 阅读 · 0 评论 -
Linux内核线程
内核线程是直接由内核本身启动的进程。内核线程实际上是将内核函数委托给独立的进程,与系统中其他进程“并行”执行(实际上,也并行于内核自身的执行),内核线程经常被称为内核“守护进程”。它们主要用于执行下列任务:l 周期性地将修改的内存页与页来源块设备同步。l 如果内存页很少使用,则写入交换区。l 管理延时动作l 实现文件系统的事务日志。 内核线程主要有两种类型:转载 2015-07-27 10:33:07 · 327 阅读 · 0 评论