
linux
dsg333
资深工程师,对嵌入式软硬件掌握较好
展开
-
在linux系统中如何编程删除一个接口的ip地址
在linux系统中如何删除一个接口的ip地址由于软件需要,有时候需要对linux的网卡配置多个ip地址,如监控系统中的网卡处于网络分域或者是多个网段中,在程序配置网卡地址时需要增加或者删除ip地址:一般使用ioctl来更改网络接口的属性:删除应该使用SIOCDIFADDR,但是在ipv4中没有实现这个调用,在ipv6中实现了所以在ipv4下调用会出现invalid argument的错误增加使用SIOCSIFADDR...原创 2020-10-15 11:13:51 · 2815 阅读 · 0 评论 -
System V 消息队列
System V 消息队列(1)一、函数头文件列表 msgget原型int msgget(key_t key, int oflag);函数功能创建一个新的消息队列或者访问一个已存在的消息队列。参数key可以为IPC_PRIVATE,表示创建一个新队列;oflag可以为IPC_CREAT转载 2013-07-28 21:04:14 · 712 阅读 · 0 评论 -
linux中使用pthread_kill函数测试线程是否存活
pthread_kill:别被名字吓到,pthread_kill可不是kill,而是向线程发送signal。还记得signal吗,大部分signal的默认动作是终止进程的运行,所以,我们才要用signal()去抓信号并加上处理函数。int pthread_kill(pthread_t thread, int sig);向指定ID的线程发送sig信号,如果线程代码内不做处理,转载 2013-09-11 21:14:36 · 680 阅读 · 0 评论 -
Linux/Unix下pid文件作用浅析
在Linux系统的目录/var/run下面一般我们都会看到很多的*.pid文件。而且往往新安装的程序在运行后也会在/var/run目录下面产生自己的pid文件。那么这些pid文件有什么作用呢?它的内容又是什么呢?(1) pid文件的内容:pid文件为文本文件,内容只有一行, 记录了该进程的ID。用cat命令可以看到。(2) pid文件的作用:防止进程启动多个副本。只有获得p转载 2013-09-12 22:40:03 · 514 阅读 · 0 评论 -
Linux 进程间通信 - 共享内存shmget方式
http://blog.chinaunix.net/uid-26921272-id-3212311.htmlLinux 进程间通信 - 共享内存shmget方式(转) 共享内存区域是被多个进程共享的一部分物理内存。如果多个进程都把该内存区域映射到自己的虚拟地址空间,则这些进程就都可以直接 访问该共享内存区域,从而可以通过该区域进行通信。共享内存是进程间共享数据转载 2013-09-14 04:02:18 · 777 阅读 · 0 评论 -
Linux共享内存(一)
Linux系统编程我一直看 ,只是讲的太简单了,通常是书和网络上的资料结合着来掌握才比较全面 .在掌握了书上的内容后,再来都其他资料 .原文链接 http://www.cnblogs.com/skyme/archive/2011/01/04/1925404.html共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。在/proc/sys/kernel/目录下,记录着共享转载 2013-09-13 20:36:53 · 689 阅读 · 0 评论 -
Linux共享内存(二)
/*共享内存允许两个或多个进程进程共享同一块内存(这块内存会映射到各个进程自己独立的地址空间) 从而使得这些进程可以相互通信。 在GNU/Linux中所有的进程都有唯一的虚拟地址空间,而共享内存应用编程接口API允许一个进程使 用公共内存区段。但是对内存的共享访问其复杂度也相应增加。共享内存的优点是简易性。 使用消息队列时,一个进程要向队列中写入消息,这要引起从用户地址空间向内核地转载 2013-09-13 20:47:18 · 665 阅读 · 0 评论 -
Linux下多线程编程的一些注意事项
http://blog.chinaunix.net/uid-317451-id-92565.html提起Linux下的多线程编程,互联网上流传着的最好资料应该就是IBM开发者网站上连载的POSIX编程指南系列,其讲解也可谓深入浅出,对Linux具体实现的细节也有较为详细的解读,强烈推荐初、高级用户慢慢把玩,仔细体会。正如ESR所提到的那样,在UNIX类操作系统上利用POSIX线程库转载 2013-09-13 21:04:26 · 1786 阅读 · 0 评论 -
pthread编程基础
http://blog.chinaunix.net/uid-20528014-id-333508.htmlLinux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。与vxworks上任务的概念类似,都是调度的最小单元,都有共享的堆、栈、代码区、全局变量等。 2.转载 2013-09-13 21:47:41 · 1382 阅读 · 0 评论 -
同步和互斥的POSIX支持(读写锁、信号量和记录锁)
一、读写锁1.基本概念当有一个线程已经持有互斥锁时,互斥锁将所有试图进入临界区的线程都阻塞住。但是考虑一种情形,当前持有互斥锁的线程只是要读访问共享资源,而同时有其它几个线程也想读取这个共享资源,但是由于互斥锁的排它性,所有其它线程都无法获取锁,也就无法读访问共享资源了,但是实际上多个线程同时读访问共享资源并不会导致问题。因而有时候将读和写访问区分开来是有益处的。读写锁就提供了这样转载 2013-09-15 22:17:35 · 707 阅读 · 0 评论 -
linux pid文件编程例子
http://www.360doc.com/content/13/0919/20/13950301_315637950.shtmllinux使用pid file UNIX环境编程里面,讲了如何使用pid文件,但是比较隐晦,今天整理一下:原文如下:#include stdio.h #include stdlib.h #include string.h #include转载 2013-09-19 20:36:26 · 1267 阅读 · 0 评论 -
wait,waitpid和exec函数
http://blog.youkuaiyun.com/guzhouke19910920/article/details/7646439本文介绍了Linux下的进程的一些概念,并着重讲解了与Linux进程管理相关的重要系统调用wait,waitpid和exec函数族,辅助一些例程说明了它们的特点和使用方法。1.7 背景在前面的文章中,我们已经了解了父进程和子进程的概念,并已经掌握转载 2013-11-09 16:20:11 · 1222 阅读 · 0 评论 -
linux syslog 笔记
http://www.linuxidc.com/Linux/2011-04/35041.htmLinux日记系统由系统日志监控程序syslogd和内核日志监控程序klogd组成。从它们的命名可以看到,这两个监控程序都是守护程序(daemon),且都注册成了系统服务。换句话说,我们可以在目录/etc/init.d/下找到它们对应的执行程序,并通过service命令对它们进行启动,关闭,重转载 2013-11-25 12:33:03 · 645 阅读 · 0 评论 -
LINUX 看门狗
先要编写看门狗程序program.sh,内容如:#!/bin/bash#注:本脚本需要以超级用户身份运行。# 监测的时间间隔,秒计INTERVAL=60# 重启时间间隔INTERVALRESTART=1#==================================================================PROGRA转载 2014-01-01 22:14:37 · 14211 阅读 · 0 评论 -
linux使用读写锁pthread_rwlock_t
引用地址:http://doudouclever.blog.163.com/blog/static/175112310201210165541752/使用读写锁配置读写锁的属性之后,即可初始化读写锁。以下函数用于初始化或销毁读写锁、锁定或解除锁定读写锁或尝试锁定读写锁。下表列出了本节中讨论的用来处理读写锁的函数。表 4–9 处理读写锁的例程操作转载 2014-03-25 13:47:01 · 10140 阅读 · 0 评论 -
proc文件系统解析
PROC系列之---/proc/loadavg等 2009-03-23 16:30:19| 分类: 信息技术|举报|字号 订阅该文件中的所有值都是从系统启动开始累计到当前时刻。该文件只给出了所有CPU的集合信息,不能该出每个CPU的信息。[root@localhost ~]# cat /proc/loadavg 4.61 4.36 4.15转载 2014-04-20 17:31:56 · 737 阅读 · 0 评论 -
linux 读写锁应用实例
/*使用读写锁实现四个线程读写一段程序的实例,共创建了四个新的线程,其中两个线程用来读取数据,另外两个线程用来写入数据。在任意时刻,如果有一个线程在写数据,将阻塞所有其他线程的任何操作。*/#include #include #include #include #include static pthread_rwlock_t rwlock;//读写锁对象#def转载 2014-03-26 00:04:03 · 13876 阅读 · 1 评论 -
linux消息队列函数msgget,msgsnd, msgrcv, ftok()
系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_t ftok( char * fname, int id )fname就时你指定的文件名,id是子序号。在一般的UNIX实现中,是将文件的索引节点号取出,前面加上子序号得到key_t的返回值。如指定文件的索引节点号为65538,换算成16进制为0x转载 2013-07-28 21:02:47 · 992 阅读 · 0 评论 -
消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例
消息队列函数由msgget、msgctl、msgsnd、msgrcv四个函数组成。下面的表格列出了这四个函数的函数原型及其具体说明。1. msgget函数原型msgget(得到消息队列标识符或创建一个消息队列对象)所需头文件#include #include #include 函数说明得到消转载 2013-07-31 08:45:58 · 1047 阅读 · 0 评论 -
在Eclipse CDT中编译含有多个main函数的项目
在C/C++项目中有时候会需要在一个项目中包含多个main函数。在Visual Studio中,这种情况可以由一个解决方案下带多个项目来解决,但在Eclipse CDT中没有解决方案这样的概念。其实通过定制的Makefile,Eclipse CDT也可以很容易达到目的,对于习惯了Makefile的程序员来说可能觉得这样反而更灵活。默认情况下,Eclipse CDT会为项目的Debug和Releas转载 2012-05-15 20:12:10 · 3253 阅读 · 1 评论 -
Linux下基于POSIX标准的共享内存操作示例
对于进程间通信,之前一直是用管道进行实现。比如父子进程间使用pipe,无血缘关系的进程可以使用fifo。从来没有想过使用共享内存,为什么呢?大家还记得这本书吧《Unix环境高级编程》,上面讲解了关于共享内存的操作,说实话,太麻烦了,真的不好用(有好多繁杂的接口,比如shmget, shmat,shmdt,chmctl等)。现在好了,基于POSIX标准的共享内存操作变得及其简单,总共就几个接口可供调转载 2012-05-18 16:47:31 · 656 阅读 · 0 评论 -
linux下TCP keepalive 属性设置
Tcp是面向连接的,在实际应用中通常都需要检测连接是否还可用.如果不可用,可分为: a. 连接的对端正常关闭. b. 连接的对端非正常关闭,这包括对端设备掉电,程序崩溃,网络被中断等.这种情况是不能也无法通知对端的,所以连接会一直存在,浪费国家的资源. tcp协议栈有个keepalive的属性,可以主动探测socket是否可用,不过这个属性的默认值很转载 2012-05-18 18:03:32 · 1165 阅读 · 0 评论 -
利用信号实现写优先的读写锁
以前利用linux系统提供的读写锁写过一些小程序,但是linux系统提供的读写锁是线程级的,如果是进程间的同步的话,就没那么轻松了。而且由于linux系统提供的读写锁是读优先的,在有些情况下,也不能满足我们的要求。下面就说说利用信号量来实现写优先的读写锁。 先说说原理,这个程序需要用到两个信号量,一个互斥信号量A,一个同步信号量B,其拥有MAX_RESOURCES个资源。当读进转载 2012-05-18 16:44:57 · 970 阅读 · 0 评论 -
System V 信号量集理解
理解主要有4点:1,信号量其实是一个计数变量,它只能为正整数和0,为0时表示该信号量对应的可用资源数为0;2,semget可以创建多个信号量,而对应的semid所以称为信号量集的id;#define SEM_KEY 0x11223344#define NUM_SEM 2//创建了一个包含2个信号量的信号量集,两个信号量的索引号是0和1semid=se转载 2012-05-18 16:46:03 · 584 阅读 · 0 评论 -
PPPD脚本释疑
1. CHAT脚本 一个简单的chat脚本有下面的结构:"" ATOK ATDT dialnumberCONNECT ""一个chat脚本都是由字符串对来组成的。前面的字符串都是期望获取的串,紧跟的是发送的字符串。这个脚本每一项的具体含义是这样的:1) MODEM期望空字符串。这句话的意思直接理解就是转载 2012-07-25 11:37:51 · 5210 阅读 · 0 评论 -
linux shell 字符串操作(长度,查找,替换)详解
http://www.cnblogs.com/chengmo/archive/2010/10/02/1841355.html在做shell批处理程序时候,经常会涉及到字符串相关操作。有很多命令语句,如:awk,sed都可以做字符串各种操作。 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略启动外部程序等时间,因此速度会非常的快。转载 2013-01-01 23:04:08 · 348 阅读 · 0 评论 -
Linux Shell编程入门
http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.htmlhttp://wiki.ubuntu.org.cn/Shell%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80#if_.E8.AF.AD_.E5.8F.A5从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用转载 2013-01-05 16:57:17 · 588 阅读 · 0 评论 -
在Linux系统下修改MTU值
http://www.linuxidc.com/Linux/2008-01/10748.htm学校一个电子教室通过ADSL宽带“猫”上网,系统为Red Hat 9.0,但在上网时有些网页打不开,而且网速不快。有同事告诉笔者,说这跟MTU值有关系,将它修改到适当的值即可。在Windows下可以通过修改注册表来修改MTU值,可在Linux下面又该如何做呢?通过查阅一些资料,笔者终于转载 2013-01-06 11:09:49 · 4768 阅读 · 0 评论 -
编译所有子目录的makefile
经常有人需要顺序编译一个一个的模块,最后才连接生成可执行程序,但是如果一个模块一个模块地执行make,比较马法,下面是一个经过验证的makefile;可以根据自己的需要修改SUBDIRS宏的值,设定自己需要编译的目录的顺序.就可以了.############################### file Makefile# author chenli# date转载 2013-07-06 21:58:36 · 785 阅读 · 0 评论 -
pppd 中文man页面
NAMEpppd - 点对点协议守护进程 总览 SYNOPSISpppd [ tty_name ] [ speed ] [ options ] 描述点对点协议 (PPP) 提供一种在点对点串列线路上传输资料流 (datagrams)的方法。PPP是由三个部份所组成的:一个在串列线路上封装(encapsulating)资料流的方法,一个可延伸的连结转载 2013-07-07 19:06:28 · 5991 阅读 · 0 评论 -
pppd englist man
NAMEpppd - Point-to-Point Protocol Daemon SYNOPSISpppd [ options ] DESCRIPTIONPPP is the protocol used for establishing internet links over dial-up modems, DSL connections, a转载 2013-07-07 19:06:53 · 4186 阅读 · 0 评论 -
linux syslog 笔记
Linux日记系统由系统日志监控程序syslogd和内核日志监控程序klogd组成。从它们的命名可以看到,这两个监控程序都是守护程序(daemon),且都注册成了系统服务。换句话说,我们可以在目录/etc/init.d/下找到它们对应的执行程序,并通过service命令对它们进行启动,关闭,重启等操作。/etc/syslog.conf文件是Linux日记系统的配置文件。下面是本人/etc/sysl转载 2013-07-09 15:40:53 · 589 阅读 · 0 评论 -
3G上网卡做以太网备用通道的方案
I have an internet connected Ubuntu server, connected by Ethernet to a residential ADSL line. This is adequate, most of the time, but I can't rely upon the ADSL link to be as reliable as I'd like. Mur转载 2013-07-11 20:04:58 · 2399 阅读 · 0 评论 -
详谈 UNIX 环境进程异常退出
简介: 本文详细论述 UNIX 环境上的进程异常退出,将导致进程异常退出的各种情景归纳为两类,对每类情况详细分析了问题出现的根本原因,同时添加了相应的实例以易于您更好地进行了解。在此基础上,文章最后论述了应该如何避免和调试进程异常退出问题。希望读者阅读此文后,对进程异常退出问题有更深层的认识,有更系统的梳理,对调试此类进程崩溃问题时也能有所帮助,写出更稳定、更可靠的软件。 进程异常退出转载 2013-07-30 19:05:26 · 831 阅读 · 0 评论 -
Linux单实例进程
#include stdio.h>#include stdlib.h>#include unistd.h>#include fcntl.h>#include syslog.h>#include string.h>#include errno.h>#include sys/stat.h>#define LOCKFILE "/var/run/mydaemon.pid转载 2013-07-30 19:26:40 · 977 阅读 · 0 评论 -
linux c函数获取系统IP地址
一,通过分析/etc/hosts文件里映射关系获取ip地址。#include #include int main(){ struct hostent *he; char hostname[20] = {0}; gethostname(hostname,sizeof(hostname)); he = geth转载 2012-05-01 13:47:06 · 11611 阅读 · 0 评论