Unix/Linux编程
放牛娃不吃草
这个作者很懒,什么都没留下…
展开
-
Linux/CRC校验
简介CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。CRC校验实用程序库在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。以下是CRC32的C语言实现,经过测试,能够正确运行:原理crc校验原理利用CRC进行检错的过程可原创 2012-12-24 10:49:46 · 6253 阅读 · 2 评论 -
Linux下动态加载SO文件
动态库的显式调用显式调用的含义是代码出现库文件名,用户需要自己去打开和管理库文件。其要点为:⑴把dlfcn.h系统头文件包含进来⑵用dlopen函数打开库文件,并指定打开方式dllope的的第一个参数为共享库的名称,将会在下面位置查找指定的共享库。 ①环境变量LD_LIBRARY_PATH列出的用分号间隔的所有目录。 ②文件/etc/转载 2013-11-21 18:11:24 · 4813 阅读 · 0 评论 -
Linux进程通信共享内存通信整理版本
暂时整理了一个方法下来。#include #include #include //getpagesize( )#include #include #include #include #define MY_SHM_ID 67483void ShowShmAttribe(int shmid){ //获得一个内存区段的信息 struct shmid原创 2013-11-11 14:04:40 · 1417 阅读 · 0 评论 -
LINUX消息队列编程(整理融合版)
http://www.wanglong-neu.cn/?p=37 一、消息队列的基本概念消息队列 (也叫做报文队列)是Unix系统V版本中3种进程间通信机制之一。另外两种是信号灯和共享内存。这些IPC机制使用共同的授权方法。只有通过系统调用将标志符传递给核心之后,进程才能存取这些资源。这种系统IPC对象使用的控制方法和文件系统非常类似。使用对象的引用标志符作为资源表中的索引。消原创 2013-11-28 11:42:29 · 1778 阅读 · 0 评论 -
linux信号通信
linux里面进程间通信的另外一种方式就是信号通信。信号通信属于软件中的。linux有如下几个常用的信号:SIGHUP:终端上发出的结束信号SIGINT :来自键盘的终端信号(CTRL+C)SIGQUIT:来自键盘的退出信号(CTRL +\)SIGFPE:浮点异常信号SIGKILL:该信号结束接收信号的进程SIGALRM:进程的定时器到期转载 2013-11-29 11:09:47 · 1355 阅读 · 0 评论 -
Linux自定义信号
信号同样是用于进程通信的,他是一种异步通信方式。我们之前的管道不是,明显,读进程要等管道里面有数据才能运行,否则他要等待。信号处理则不同,进程不知道什么时候信号会到来,先看一小段代码,看看信号的程序:[root@liumengli signal]# cat ./signal_recive1.c #include "stdio.h"#include "signal.h"#incl转载 2013-11-22 16:06:32 · 5052 阅读 · 0 评论 -
epoll 相对于poll的优点
1.支持一个进程打开大数目的socket描述符(FD)select 最不能忍受的是一个进程所打开的FD是有一定限制的,由FD_SETSIZE设置,默认值是2048。对于那些需要支持的上万连接数目的IM服务器来说显 然太少了。这时候你一是可以选择修改这个宏然后重新编译内核,不过资料也同时指出这样会带来网络效率的下降,二是可以选择多进程的解决方案(传统的 Apache方案),不过虽然linux转载 2014-08-28 11:07:50 · 1215 阅读 · 0 评论 -
nginx+ffmpeg搭建rtmp转播rtsp流的flash服务器
nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择。本文介绍了一种简易方法快速搭建rtmp流媒体服务器,也叫rtsp转播,数据源不是读取文件,而是采用获取rtspNal流后使用ffmpeg转播。csdn固本培元:leoluopy@gmail.com原创 2014-07-28 14:17:04 · 27209 阅读 · 9 评论 -
Linux下的多进程编程初步(转载)
最近在学习linux环境高级编程,多进程编程算是编程中的最重要的一个部分了,本文让我学习和明白了很多,所以转载过来。让更多想多线程编程的人学习。只有顶到首页才能让更多的人学习。文章摘要: 多线程程序设计的概念早在六十年代就被提出,但直到八十年代中期,Unix系统中才引入多线程机制,如今,由于自身的许多优点,多线程编程已经得到了广泛的应用。本文我们将介绍在Linux下编写多进程和多转载 2013-08-28 18:02:50 · 1855 阅读 · 0 评论 -
Linux父子进程通信--管道及FIFO通信
本文是对前文的一个整理,使代码的编写更加高效以及移植的可重用性变高。 详细可见上文:http://blog.csdn.net/gubenpeiyuan/article/details/10465721 这篇文章里面详细讲述了,Linux进程通信的创建方法,管理方法,以及例举了通信方法。 但是其中的实例,比较杂乱,在你的大项目里面移植时,需要花上你一些功夫了。原创 2013-11-10 21:31:07 · 3124 阅读 · 0 评论 -
Linux的exec族函数使用示例
1. 示例[cpp] view plaincopy/*exec函数示例*/ #include #include int main(void) { int flag; pid_t pid; char *const argv[] = {"%U", "--user-dat转载 2013-11-22 12:51:46 · 1516 阅读 · 0 评论 -
openssl的Md5计算笔记
#include #include #include #include #include #include using std::cout ;using std::endl ;std::string downgadget::Downloader_c::FileDigest(const std::string &file){ FILE *fd=fopen(file.c_str(原创 2016-03-24 15:42:14 · 1154 阅读 · 0 评论 -
linux的getopt_long用法简介
linux解析命令行选项getopt_long用法在程序中难免需要使用命令行选项,可以选择自己解析命令行选项,但是有现成的,何必再造轮子。下面介绍使用getopt_long解析命令行选项。程序中主要使用: 短选项 长选项 是否需要参数 备注 -v --version 否 查询版本号-n --name 是(用户名) 指定使用者-d --debug 否 是否已测转载 2016-03-11 15:21:43 · 560 阅读 · 0 评论 -
boost智能指针笔记
参见《Boost程序库完全开放指南》 第3章 内存管理所有示例,采用vs2010开发工具(vs2005也适用),均为win32控制台程序。Boost库的配置可参照:http://blog.csdn.NET/segen_jaa/article/details/7407404。1、scoped_ptr内动态管理内存。但所有权不能转让,不能进行赋值操作。转载 2016-11-03 16:48:25 · 477 阅读 · 0 评论 -
libcurl用法笔记
#include #include #include #include #include #include #include #include //static const char *gUrl = "http://127.0.0.1:8085/database/0.1/junctions?position=1&range=1&type=connection";//static原创 2016-11-30 17:09:32 · 1703 阅读 · 0 评论 -
linux动态加载so库文件
1:libf1.so #ifndef F1_HH_#define F1_HH_extern “C” int func1(char *p);#endif #include using namespace std;#ifdef __cplusplusextern "C" {#endifint func1(cha转载 2013-11-21 18:53:25 · 3885 阅读 · 0 评论 -
wait以及waitpid用法详解
wait(等待子进程中断或结束)表头文件 #include #include定义函数 pid_t wait (int * status);函数说明: wait()会暂时停止目前进程的执行,直到有信号来到或子进程结束。 如果在调用 wait()时子进程已经结束,则 wait()会立即返回子进程结束状态值。转载 2013-11-06 16:02:43 · 3029 阅读 · 0 评论 -
linux进程间通信的几种机制的比较及适用场合
# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。# 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。# 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共转载 2013-09-22 22:59:54 · 1329 阅读 · 0 评论 -
UNIX/LINUX 全局跳转
全局跳转 UNIX 下的C 语言中, 有一对特殊的调用: 跳转函数, 原型如下: #include int setjmp(jmp_buf env); void longjump(jmp_buf env, int val); 函数setjmp 存储当前的堆栈环境(包括程序的当前执行位置)到参数env 中, 当函数正常调用成功时返回0. 函数longjmp 恢复保原创 2012-12-20 15:35:46 · 950 阅读 · 0 评论 -
UNIX/LINUX 单线程I/O 超时处理
UNIX 下的I/O 超时处理是一个很常见的问题, 它的通常做法是接收输入(或发送输出)后立刻返回, 如果无输入(或输出)则n 秒后定时返回. 一般情况下, 处理UNIX中I/O 超时的方式有终端方式, 信号跳转方式和多路复用方式等三种. 本节设计一个定时I/O 的例子, 它从文件描述符0 中读取一个字符, 当有输入时继续, 或者3 秒钟后超时退出, 并打印超原创 2012-12-20 16:45:14 · 1069 阅读 · 0 评论 -
Linux下的定时器
#include #include int getitimer(int which, struct itimerval *value); int setitimer(int which, const struct itim erval value, struct itimerval *ovalue); 函数setitimer 可以提供三种定时器, 它们相互独立,原创 2012-12-20 11:35:04 · 1057 阅读 · 0 评论 -
LInux的Shell命令结果接入程序
在linux的输入中主要分为如下三种:使用程序中调用linux的shell后写入程序中原创 2013-01-10 13:38:33 · 751 阅读 · 0 评论 -
Linux编程,用户自定义信号
linux的进程之间使用用户自定义信号通信非常方面。普通的系统信号用户的自定义信号原创 2013-01-10 13:42:43 · 4958 阅读 · 0 评论 -
Linux下So文件的加载(C语言编程)
使用动态链接库,可以使程序的可靠性变高,也可以减小工程的体积。这里介绍SO文件在linux下咋加载方法。原创 2013-01-10 13:45:48 · 2177 阅读 · 0 评论 -
Linux/UNIX 信号查询列表
我们运行如下命令,可看到Linux支持的信号列表:$ kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) S转载 2013-03-04 17:40:44 · 953 阅读 · 0 评论 -
Linux下插件开发应用案例
Linux下插件开发应用案例 方汉 在Linux 上愈来愈多的应用程序利用Plugin编程技术来实现扩展功能,目前应用比较广泛的有Gimp、Netscape/Mozilla、XMMS和Nessus等,本文将简单介绍这些软件的Plugin的架构和编程。 给软件以生命力的Plugin 众所周知,要让一个软件具有生命力,最重要的一点是要让它提供并支持越来越转载 2013-03-04 14:26:16 · 1399 阅读 · 0 评论 -
Linux共享内存编程实例
/*共享内存允许两个或多个进程进程共享同一块内存(这块内存会映射到各个进程自己独立的地址空间) 从而使得这些进程可以相互通信。 在GNU/Linux中所有的进程都有唯一的虚拟地址空间,而共享内存应用编程接口API允许一个进程使 用公共内存区段。但是对内存的共享访问其复杂度也相应增加。共享内存的优点是简易性。 使用消息队列时,一个进程要向队列中写入消息,这要引起从用户地址空间向内核地转载 2013-07-08 12:29:28 · 945 阅读 · 0 评论 -
一个简单的MD5加密算法C语言示例程序
#include #include #include #include typedef unsigned char *POINTER; typedef unsigned short int UINT2; typedef unsigned long int UINT4; typedef struct转载 2013-08-15 16:40:02 · 1790 阅读 · 1 评论 -
Defunct进程 僵尸进程
在测试基于 DirectFB+Gstreamer 的视频联播系统的一个 Demo 的时候,其中大量使用 system 调用的语句,例如在 menu 代码中的 system("./play") ,而且多次执行,这种情况下,在 ps -ef 列表中出现了大量的 defunct 进程,对程序的运行时有害的。按说system的源码中应该已经包含了wait,但也不能排除开发板上这个版本的system中可能没转载 2013-08-28 18:14:37 · 1434 阅读 · 0 评论 -
Linux信号量机制及编程
1965年,荷兰学者Dijkstra提出了利用信号量机制解决进程同步问题,信号量正式成为有效的进程同步工具,现在信号量机制被广泛的用于单处理机和多处理机系统以及计算机网络中。信号量S是一个整数,S大于等于零是代表可供并发进程使用的资源实体数,当S小于零时则表示正在等待使用临界区的进程数。Dijkstra同时提出了对信号量操作的PV原语。P原语操作的动作是:(1)S减转载 2013-08-29 18:15:45 · 2059 阅读 · 0 评论 -
Socket编程Linux或者Windows或Vxworks
“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有转载 2013-09-02 14:39:16 · 2585 阅读 · 0 评论 -
Linux下Kill函数用法
Linux下Kill函数用法http://www.cnblogs.com/winnxm/archive/2010/01/22/1654502.html [ KILL ]功能描述:用于向任何进程组或进程发送信号。1 #include sys/types.h>2 3 #include signal.h>4 5 int kill(pid_t pid转载 2013-09-21 18:34:44 · 1186 阅读 · 0 评论 -
python 实现linux系统上文件系统变化监控(拿去直接用,不谢)
# !/usr/bin/env python# encoding:utf-8# Event Name Is an Event Description# IN_ACCESS Yes file was accessed.# IN_ATTRIB Yes metadata changed.# IN_CLOSE_NOWRITE Yes unwrittable file was close...原创 2019-03-28 09:18:16 · 1595 阅读 · 1 评论