![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 55
caoli98033
这个作者很懒,什么都没留下…
展开
-
(转)Linux共享内存使用常见陷阱与分析(3)-ftok是否一定会产生唯一的key值
转自http://os.51cto.com/art/201311/418977_2.htmftok是否一定会产生唯一的key值?系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_t ftok( char * pathname, int proj_id) pathname就时你指转载 2015-03-25 10:08:50 · 2071 阅读 · 0 评论 -
(转)Linux共享内存使用常见陷阱与分析(1)-超过共享内存的大小限制
转自http://os.51cto.com/art/201311/418977.htm所谓共享内存就是使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。其他进程能把同一段共享内存段“连接到”他们自己的地址空间里去。所有进程都能访问共享内存中的地址。如果一个进程向这段共享内存写了转载 2015-03-24 21:42:59 · 7804 阅读 · 0 评论 -
(转)Linux共享内存使用常见陷阱与分析(2)-多次进行shmat会出现什么问题
转自http://os.51cto.com/art/201311/418977_1.htm多次进行shmat会出现什么问题?当首次创建共享内存段时,它并不能被任何进程所访问。为了使共享内存区可以被访问,则必须通过 shmat 函数将其附加( attach )到自己的进程空间中,这样进程就与共享内存建立了连接。该函数声明在 linux/shm.h中:#include #inclu转载 2015-03-25 10:01:29 · 4374 阅读 · 1 评论 -
(转)Linux共享内存使用常见陷阱与分析(4)-共享内存删除的陷阱
转自http://os.51cto.com/art/201311/418977_3.htm共享内存删除的陷阱?当进程结束使用共享内存区时,要通过函数 shmdt 断开与共享内存区的连接。该函数声明在 sys/shm.h 中,其原型如下:#include #include int shmdt(const void *shmaddr); 参数 shmaddr 是 shmat转载 2015-03-25 10:14:29 · 857 阅读 · 0 评论 -
Linux socketpair详解
socketpair函数概要如下:#include 定义一些C宏常量#include 定义socketpair函数原型int socketpair(int domain, int type, int protocol, int sv[2]);socketpair函数需要四个参数:domain-套接口的域type-套接口类型protocol-使用的协议sv[2原创 2015-03-24 22:11:11 · 4320 阅读 · 0 评论 -
利用ping来检测设备在线
在网络连接中,一般用heartbeat来检测设备是否在线。但是如果有一台第三方的设备,没法在设备上制作heartbeat程序,那么可以用ping来检测该设备是否在线,相当于heartbeat了。别忘了防火墙可能会屏蔽ping。我是粗暴的将防火墙关闭了。以下是Linux中模拟ping命令的C代码:/*******************************************原创 2015-05-27 22:40:59 · 1290 阅读 · 0 评论 -
Linux中用C语言执行shell命令并获取返回结果
最近在项目中用到了C语言执行shell命令的问题,调查了一下,一般有system函数、exec族函数,但是还不太清楚怎么获取shell命令执行的返回信息。例如执行一个ifconfig命令,肯定需要获取ifconfig命令的返回值的。接着调查的话,发现有一个popen函数,也可以执行shell命令,并且可以获取shell命令执行的返回信息。man popen可以看到:#inc原创 2015-05-31 23:30:12 · 11573 阅读 · 0 评论 -
centos上编译的可执行程序在suse上无法运行
在centos6.2上制作了一个可执行程序,取名为aio_test,其实是一个利用libaio读写文件的程序。在centos6.2上可以正常编译,可以正常执行aio_test。当我把aio_test直接copy到一个suse 10的机器上时,发现提示错误,找不到/lib64/libuuid.so (aio_test中用到了uuid库)。后来才发现,suse机器的libuuid库是放在/原创 2015-06-04 23:30:34 · 1584 阅读 · 0 评论 -
用libaio读写文件时遇到的问题
最近做了一些libaio的读写文件的相关工作,是一个结合eventfd、libaio、epoll的程序。碰到了一个问题,就是用io_submit提交io后,利用io_getevents获取完成的io操作数,结果不清楚为什么io_getevents一直返回错误码-14,利用strerror查看,提示Bad Address。用man查看io_getevents说明,说是io_getevents原创 2015-06-04 23:45:33 · 2082 阅读 · 0 评论