Linux System Program
文章平均质量分 93
fengzhishang_meteor
吾生也有涯,而知也无涯
展开
-
umount失败
umount失败# fuser -mk /opt973 974 1013 1014 1075# umount /optumount: can't unmount /opt: Device or resource busy常规umount失败后有3种处理方法:fuser,lsof,和umount -l这几个方法都试过,仍然失败,umount -l实际上骗人的,df虽然显示已经卸载...原创 2019-12-16 16:09:34 · 4058 阅读 · 0 评论 -
Linux reboot全过程
嵌入式Linux 下面的reboot命令看似简单,但出问题时定位起来发现别有洞天。下面就按在shell下执行reboot命令之后程序的执行过程进行解析。Busybox:1.23.2 ——制作跟文件系统,/sbin/reboot程序的由来Libc:2.6.1 ——标准C库Linux kernel:2.6.35 ——内核版本原创 2016-08-17 17:40:22 · 41693 阅读 · 3 评论 -
详细解释signal和sigaction以及SIG_BLOCK
http://blog.csdn.net/beginning1126/article/details/8680757signal,此函数相对简单一些,给定一个信号,给出信号处理函数则可,当然,函数简单,其功能也相对简单许多,简单给出个函数例子如下:[cpp] view plain copy 1 #include 2 #inc转载 2016-08-19 09:39:48 · 5526 阅读 · 0 评论 -
进程组、会话、控制终端和守护进程
1、进程组每个进程除了有一个进程ID之外,还有一个进程组。进程组是一个或多个进程的集合。每个进程组都有唯一的进程组ID。函数getpgrp()可以得到进程的进程组ID。1 #include 2 #include 3 #include 4 5 int main() { 6 pid_t pid; 7 8 if ((转载 2016-08-29 09:42:14 · 893 阅读 · 0 评论 -
Linux信号:linux下20种信号实例说明
为了节省篇幅所有测试都忽略错误检查SIGABRT:调用abort函数时产生此信号。默认终止进程,可捕捉 6 void sig_abort(int signo){ 7 printf("get signal:%s\n",strsignal(signo)); 8 } 9 10 int main(void){ 11 sign转载 2016-08-17 15:25:48 · 2306 阅读 · 0 评论 -
关于cmake is not able to compile a simple test program
指定了交叉编译set(CMAKE_SYSTEM_NAME Linux)set(CMAKE_FIND_ROOT_PATH "/opt/mips/eldk4.1/usr/bin")set(CMAKE_C_COMPILER "${CMAKE_FIND_ROOT_PATH}/mips_4KC-gcc")但报错compile tools can not be able to bu原创 2016-05-23 18:52:10 · 31497 阅读 · 0 评论 -
Linux--进程组、会话、守护进程
进程组 一个或多个进程的集合 进程组ID: 正整数 两个函数 getpgid(0)=getpgrp()eg:显示子进程与父进程的进程组id 1 #include 2 #include 3 #include 4 5 int main() { 6 pid_t pid; 7 8 if ((pid=fork())0) {转载 2016-05-26 21:07:16 · 565 阅读 · 0 评论 -
Linux信号列表与发送信号
http://blog.csdn.net/baobao8505/article/details/1115820我们运行如下命令,可看到Linux支持的信号列表:$ kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS转载 2016-08-19 14:13:38 · 1126 阅读 · 0 评论 -
Linux C语言检查进程是否存在
使用C语言根据进程名检查进程是否存在,然后重启进程/** COPYRIGHT NOTICE* Copyright (C) 2016 HuaHuan Electronics Corporation, Inc. All rights reserved** Author :Kevin_fzs* File Name :/home/kevin/wo原创 2016-08-15 09:13:37 · 9696 阅读 · 0 评论 -
vim排序,统计,数据处理等
转自他人的成果“CTRL+v” 进入“可视 块”模式,也即列模式,可删除列:g/root/d 删除包含root的行1:如果我们想以第4列数据进行排序,可以在vim中如此做:1,12!sort -r -n -k4.1,5-r 是降序排序-n 是按数字大小排序-k,表示根据那个字段排序,4.1,表示第4列第一个字符开始 ,5表示到第5个字段为结束-t 后面跟分隔符,缺省是空格2: 在VIM里面, ...转载 2018-05-14 17:51:53 · 4144 阅读 · 0 评论 -
gdb调试和技巧
GDB调试第一部分 命令行和使用方法gdb常用命令在下表列出:命令描述backtrace(或bt)查看各级函数调用及参数finish连续运行到当前函数返回为止,然后停下来等待命令frame(或f)帧编号 选择栈帧info(或原创 2017-11-15 11:16:32 · 2929 阅读 · 0 评论 -
Linux ranlib的用法
ranlib的用法! 静态库文件需要使用“ ar ”来创建和维护。当给静态库增建一个成员时(加入一个 .o 文件到静态库中),“ ar ”可直接将需要增加的 .o 文件简单的追加到静态库的末尾。之后当我们使用这个库进行连接生成可执行文件时,链接程序“ ld ”却提示错误,这可能是:主程序使用了之前加入到库中的 .o 文件中定义的一个函数或者全局变量,但连接程序无法找到这个函数或者变量。转载 2017-08-29 17:01:43 · 2395 阅读 · 0 评论 -
用户空间获取eth0开关状态和开关实现
用户空间获取eth0开关状态和开关实现开关的实现与ifconfig eth0 dow/up 相同获取状态int get_eth0_status(){ struct ifreq ifr; int sockfd; if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { printf("原创 2017-08-01 17:35:34 · 1468 阅读 · 2 评论 -
Linux系统启动在inittab和rc里面添加启动程序问题
一般linux中,系统启动时,内核的启动的最后启动了用户空间的第一个进程init,这个进程的最后会执行/etc/inittab中的命令一般inittab命令如下console::sysinit:/etc/init.d/rcS#ttyS0::askfirst:-/bin/sh::respawn:-/bin/loginsysinit是启动时执行一次的程序respawn是启动这个进程,如原创 2016-08-31 11:42:12 · 3188 阅读 · 0 评论 -
Linux系统调用列表
以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数。这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的。按照惯例,这个列表以man pages第2节,即系统调用节为蓝本。按照笔者的理解,对其作了大致的分类,同时也作了一些小小的修改,删去了几个仅供内核使用,不允许用户调用的系统调用转载 2016-10-28 08:44:32 · 572 阅读 · 0 评论 -
linux socket 缓冲区默认大小
1. tcp 收发缓冲区默认值[root@ www.linuxidc.com]# cat /proc/sys/net/ipv4/tcp_rmem 4096 87380 416153687380 :tcp接收缓冲区的默认值[root@ www.linuxidc.com]# cat /proc/sys/net/ipv4/tcp_wmem转载 2016-09-22 10:36:04 · 2459 阅读 · 0 评论 -
Linux信号(signal) 机制分析
http://www.cnblogs.com/hoys/archive/2012/08/19/2646377.html【摘要】本文分析了Linux内核对于信号的实现机制和应用层的相关处理。首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理。接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等。最后介绍了应用层的相关处理,主要包括信号处理函数的安装、信转载 2016-05-13 09:50:53 · 629 阅读 · 0 评论 -
信号量与互斥锁的一些理解
一、从作用上来讲互斥锁是用在多线程多任务互斥的信号量用于线程的同步原创 2016-04-13 15:07:39 · 4242 阅读 · 2 评论 -
linux编程获取本机IP地址
getifaddrs()和struct ifaddrs的使用,获取本机IP博客分类: Linux C编程 ifaddrs结构体定义如下:C代码 struct ifaddrs { struct ifaddrs *ifa_next; /* Next item in list */转载 2015-07-09 10:58:47 · 1123 阅读 · 0 评论 -
自助Linux之问题诊断工具strace
引言“Oops,系统挂死了..."“Oops,程序崩溃了..."“Oops,命令执行报错..." 对于维护人员来说,这样的悲剧每天都在上演。理想情况下,系统或应用程序的错误日志提供了足够全面的信息,通过查看相关日志,维护人员就能很快地定位出问题发生的原因。但现实情况,许多错误日志打印模凌两可,更多地描述了出错时的现象(比如"could not open fi转载 2015-06-26 14:44:55 · 694 阅读 · 0 评论 -
mmap详解
共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式, 因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据: 一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域转载 2015-04-17 17:04:48 · 652 阅读 · 0 评论 -
Linux进程间通信——使用消息队列
下面来说说如何用不用消息队列来进行进程间的通信,消息队列与命名管道有很多相似之处。有关命名管道的更多内容可以参阅我的另一篇文章:Linux进程间通信——使用命名管道一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞转载 2015-04-21 16:56:47 · 902 阅读 · 0 评论 -
深刻理解Linux进程间通信(IPC)
序linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接口(socket转载 2015-03-16 10:33:15 · 667 阅读 · 0 评论 -
GNU GCC 实用工具 ar 的参数的意义
http://blog.itpub.net/640706/viewspace-1059269/GNU GCC 实用工具 ar 的参数的意义[@more@]GNU GCC 实用工具 ar 的参数的意义:ar key [args] [posname] archive [files]将一组编译过的文件合并为一个文件.最常见的用法就是建立并更新由装载器(loader--ld)使用的转载 2014-12-22 17:08:05 · 3881 阅读 · 0 评论 -
c/c++ linux调试工具
原文地址:http://blog.csdn.net/bugouyonggan/article/details/194839991. 使用printf调试#ifdef DEBUGPrintf(“valriable x has value = %d\n”, x)#endif然后在编译选项中加入-DDEBUG更复杂的调试应用如:转载 2014-12-05 16:58:15 · 3109 阅读 · 0 评论 -
dup dup2剖析
http://www.cnblogs.com/sdphome/archive/2011/04/30/2033381.htmldup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2。如果两次open同一文转载 2014-12-16 17:12:32 · 770 阅读 · 0 评论 -
进程的disk sleep状态与僵尸进程
先说一下进程的睡眠状态Linux进程有两种睡眠状态,一种interruptible sleep,处在这种睡眠状态的进程是可以通过给它发信号来唤醒的,也是可以kill的,进程状态如下[root@lmxe:/home]#cat /proc/949/statusName: sysmgtState: S (sleeping)另外一种睡眠状态是uninterruptible原创 2015-09-08 09:25:03 · 13110 阅读 · 0 评论 -
简单工程Makefile的编写
工程Makefile的编写,对于初始Makefile的菜鸟们来说,还是比较头疼的一件事情,如何做到整个工程结构清晰,各个模块相对独立,模块的添加 删除等都比较方便,各个层次的的Makefile风格一致,便于移植,这些并不容易。这里,就自己学习的一些体会,和大家分享一下。 本例工程,实现几种排序算法的具体代码实现和性能比较。工程结构如下:sort|-- Makefile|-转载 2015-11-20 15:54:17 · 690 阅读 · 0 评论 -
libc、glibc和glib的关系
转自:http://my.oschina.net/moooofly/blog/126260http://nieyong.github.io/wiki_ny/glibc,%20eglibc%E5%92%8C%20glib%E7%9A%84%E5%8C%BA%E5%88%AB.html【glibc 和 libc】 glibc 和 libc 都是 Linu转载 2015-12-23 15:49:33 · 769 阅读 · 0 评论 -
查看LINUX当前目录下的文件夹大小
File参数实际上是一个目录,就要报告该目录内的所有文件。如果没有提供 File参数,du命令使用当前目录内的文件。如果File参数是一个目录,那么报告的块的数量就是分配到目录中文件以及分配到目录自身的块之和。指定-a标志,报告个体文件中块数量。不管是否使用了-a标志,由File参数指定的个体文件总是要列出。指定-s标志,报告用于所有指定文件和目录中所有文件的全部块。块计数包括每个转载 2016-01-20 11:25:18 · 939 阅读 · 0 评论 -
linux sleep(0)与usleep
sleep(0)是让出CPUhttp://blog.csdn.net/lengzijian/article/details/9092367在我的一个项目中,因为需要与串口通信,每次读写都需要延时usleep(1000)=1ms,但是通信量非常大,每一次工作这样的通信大概有300次左右,这样算下耗时应该是300ms左右。原创 2016-01-20 11:23:22 · 4178 阅读 · 0 评论 -
Linux 时钟 - 操作系统时钟和硬件时钟
由于Linux时钟和视窗系统时钟从概念的分类、使用到设置都有非常大的不同,所以,搞清晰Linux时钟的工作方式和设置操作,不仅对于Linux初学者有着重大意义,而且对于使用Linux服务器的用户来说尤为重要。 Linux时钟的分类 视窗系统时钟大家可能十分熟悉了,Linux时钟在概念上类似视窗系统时钟显示当前系统时间,但在时钟分类和设置上却和视窗系统大相径庭。和视窗转载 2015-11-27 11:02:06 · 1704 阅读 · 0 评论 -
硬中断和软中断
本文主要内容:硬中断 / 软中断的原理和实现内核版本:2.6.37Author:zhangskd @ csdn blog 概述 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器。如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚。处理器于是立即停止自己正在做的事,跳转载 2015-11-30 17:26:37 · 524 阅读 · 0 评论 -
Linux 时钟和ntp服务
对多个linux服务器,时间保持一致是很必要的。根据精确度要求,应该有相应的时间间隔进行时间同步。如果不进行时间同步,时间久了就会差别很大,遇到问题时定位就很困难。因为多台设备的配合,log之间可能有前因后果,时间是同步事件的先后的重要依据。 一般来说,对一个机房内的设备,可以设置一台时间服务器,由它定期从一个标准的时间服务器上获取时间。其他的服务器可以通过内网的连接从这台服务器进原创 2015-11-27 18:26:09 · 1271 阅读 · 0 评论 -
关于Linux的Jiffies/Tick/HZ
关于Linux的Jiffies/Tick/HZ Linux核心几个重要跟时间有关的几个名词: HZ、tick、jiffies。 1.linux HZ Linux核心每隔固定周期会发出timer interrupt (IRQ 0),HZ是用来定义每一秒有几次timer interrupts。举例来 说,HZ为1000,代表每秒有1000转载 2015-12-15 14:09:03 · 1814 阅读 · 0 评论 -
简单工程Makefile的自动生成
工程Makefile的编写,可以自己动手来写,也可以使用automake等工具来自动生成。下面还是以sort工程为例,对自动生成Makefle进行示例说明。预备知识: 运用GNU Autoconf 及 Automake 这两套工具,可以自动生成Makefile文件,并且让开发出来的软件可以像大多数源码包那样,只需"./configure", "make","make instal转载 2015-11-20 15:56:13 · 1163 阅读 · 0 评论 -
内存信号量sem_init函数解析
int sem_init(sem_t *sem, int pshared, unsigned int value);return 0 on success,or -1 on error本文着重解析sem_init第二个参数 pshared ,下面摘自《The Linux Programming Interface》这一段大体意思:如果pshared是0 则可以在线程原创 2014-03-12 16:11:51 · 3664 阅读 · 0 评论