aix 共享内存段问题

关于aix操作系统上 共享内存(shared memory)单个段的最大值到底受什么影响,我从网上搜集了大量的信息但是没有一个做明确说明的。根据我的经验 m85 --aix 4.3.3单段最大值是2G,今天在新的p570上测试,刚开始发现,将我们应用程序的配置参数调整到2G以上,shmget就会报错。

向我们公司平台工程师咨询,看看是不是有哪个参数需要修改,得到的答复:AIX中没什么参数需要修改,最新的操作系统5.3支持超过2G,5.1,5.2没有查过能不能超过2G。

测试:

增加#include

shmid=shmget(p_key,length,IPC_CREAT|IPC_EXCL|0644);

cout <

发现errno = 22

查看errno.h:

#define EINVAL 22 /* Invalid argument */

是参数的问题,继续查找参数的问题,发现我们的length定义的是int,改为 long 正常了。

(说明:其实同样的问题,我们在m85上也是做过测试的当时改为long是不行的,后来我们考虑可能有两方面的原因:
1.我们使用的m85虽然是64位的,但是操作系统的内核是32位的;
2.我们m85上的aix是4.3.3)

问题解决了,在此记录一下。

附其他errno的解释,方便以后查询:

/usr/include/errno.h
#define EPERM 1 /* Operation not permitted */
#define ENOENT 2 /* No such file or directory */
#define ESRCH 3 /* No such process */
#define EINTR 4 /* interrupted system call */
#define EIO 5 /* I/O error */
#define ENXIO 6 /* No such device or address */
#define E2BIG 7 /* Arg list too long */
#define ENOEXEC 8 /* Exec format error */
#define EBADF 9 /* Bad file descriptor */
#define ECHILD 10 /* No child processes */
#define EAGAIN 11 /* Resource temporarily unavailable */
#define ENOMEM 12 /* Not enough space */
#define EACCES 13 /* Permission denied */
#define EFAULT 14 /* Bad address */
#define ENOTBLK 15 /* Block device required */
#define EBUSY 16 /* Resource busy */
#define EEXIST 17 /* File exists */
#define EXDEV 18 /* Improper link */
#define ENODEV 19 /* No such device */
#define ENOTDIR 20 /* Not a directory */
#define EISDIR 21 /* Is a directory */
#define EINVAL 22 /* Invalid argument */
#define ENFILE 23 /* Too many open files in system */
#define EMFILE 24 /* Too many open files */
#define ENOTTY 25 /* Inappropriate I/O control operation */
#define ETXTBSY 26 /* Text file busy */
#define EFBIG 27 /* File too large */
#define ENOSPC 28 /* No space left on device */
#define ESPIPE 29 /* Invalid seek */
#define EROFS 30 /* Read only file system */
#define EMLINK 31 /* Too many links */
#define EPIPE 32 /* Broken pipe */
#define EDOM 33 /* Domain error within math function */
#define ERANGE 34 /* Result too large */
#define ENOMSG 35 /* No message of desired type */
#define EIDRM 36 /* Identifier removed */
#define ECHRNG 37 /* Channel number out of range */
#define EL2NSYNC 38 /* Level 2 not synchronized */
#define EL3HLT 39 /* Level 3 halted */
#define EL3RST 40 /* Level 3 reset */
#define ELNRNG 41 /* Link number out of range */
#define EUNATCH 42 /* Protocol driver not attached */
#define ENOCSI 43 /* No CSI structure available */
#define EL2HLT 44 /* Level 2 halted */
#define EDEADLK 45 /* Resource deadlock avoided */

#define ENOTREADY 46 /* Device not ready */
#define EWRPROTECT 47 /* Write-protected media */
#define EFORMAT 48 /* Unformatted media */

#define ENOLCK 49 /* No locks available */

#define ENOCONNECT 50 /* no connection */
#define ESTALE 52 /* no filesystem */
#define EDIST 53 /* old, currently unused AIX errno*/

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/267897/viewspace-983179/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/267897/viewspace-983179/

你可能感兴趣的:(操作系统)