易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux 下共享内存建立时需要注意的问题

在linux下使用共享内存时,照着书上或者网上的方法,使用shmat函数时,老是会碰到一个问题
提示:
shmat error
permission denied
每次需要sudo一下才能够正常运行,并且如果普通用户使用ipcs查看的话,是看不见已经分配的共享内存的,需要在root用户下才能看见, 最开始以为是shmat需要root用户的权限,后来发现不是这样。
造成这个问题的成因是在使用shget的时候,没有赋于开辟的共享内存对应的读写权限。
shget函数原型如下
int shmget( key_t shmkey , int shmsiz , int flag );
注意最后一个形参 flag,表示当前内存的模式
(mode)以及权限标识。
可以取如下的值
模式可取如下值: 新建:IPC_CREAT
如果标识符以存在,则返回错误值:IPC_EXCL
然后将“模式” 和“权限标识”进行“或”运算,做为第三个参数。
如: IPC_CREAT | IPC_EXCL | 0666

shmid = shmget( shmkey , sizeof(in_data) , IPC_CREAT |
0666 ) ;
这样,一切ok. 不需要root权限,用ipcs也能看到当前用户建立的共享内存信息


相关文档:

Linux信号量 共享内存和消息队列

Linux信号量 共享内存和消息队列
1. 信号量
使用信号量可以实现进程间同步。主要函数定义:
#include <sys/sem.h>
int semctl(int sem_id, int sem_num, int command, …);
int semget(key_t key, int num_sems, int sem_flags);
int semop(int sem_id, struct sembuf *sem_ops, size_t num_sem_ops);
& ......

LINUX C 定时器

【实现功能】:Linux下的C编程:编写一个程序(库),实现定时器(计时器)的功能,它能为用户提供在同一进程中多次使用的定时器。这里要求用信号来实现。
【解题思路】:编写一个结构体Timer代表一个计时器,然后再定义Timer类型的数组myTimer[N],用来保存我们设置的定时器;再定义函数setTimer()生成计时器,并将生成 ......

Linux桌面的宣传与普及






<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
A:link { so-language: zxx }
-->
    当今,
Linux
桌面到宣传与普及应该进入一个新时期。何故?
 
    今年
4

29
日,
Ubuntu
10.04
发布是在
Linux
桌面发展历史上的一个 ......

配置自己的Linux svnserve服务器

一、新建并初始化版本库
1.新建代码仓库
# svnadmin create /home/myrepos
这样,我们就在/home目录下新建了版本库myrepos。
2.初始化代码仓库
#mkdir -p code/{branches,tags,trunk}
按照svn手册上的建议,我们版本库的布局采用branches/tags/trunk这样的三个目录。
然后可以将代码直接拷贝的trunk目录,也可以随后 ......

oracle在linux下怎么安装

red hat linux 下安装 oracle 10g
racle考资料:
Oracle官方网站: http://download.oracle.com/docs/html/B10813_01/toc.htm
一、以root用户登录, 进行如下操作:
1 检查硬件要求
* 主要包括:
********************************************************************
* 内存:      & ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号