px_ipc_name.c

 1     /* include px_ipc_name */
 2 #include    "unpipc.h"
 3
 4 char *
 5 px_ipc_name(const char *name)
 6 {
 7
 8     char    *dir, *dst, *slash;
 9
10     if ( (dst = malloc(PATH_MAX)) == NULL)
11         return(NULL);
12
13         /* 4can override default directory with environment variable */
14     if ( (dir = getenv("PX_IPC_NAME")) == NULL) {
15
16 #ifdef  POSIX_IPC_PREFIX
17         dir = POSIX_IPC_PREFIX;     /* from "config.h" */
18 #else
19         dir = "/tmp/";              /* default */
20 #endif
21
22 }
23         /* 4dir must end in a slash */
24     slash = (dir[strlen(dir) - 1] == ‘/‘) ? "" : "/";
25     snprintf(dst, PATH_MAX, "%s%s%s", dir, slash, name);
26
27     return(dst);            /* caller can free() this pointer */
28
29 }
30 /* end px_ipc_name */
31
32 char *
33 Px_ipc_name(const char *name)
34 {
35
36     char    *ptr;
37
38     if ( (ptr = px_ipc_name(name)) == NULL)
39         err_sys("px_ipc_name error for %s", name);
40     return(ptr);
41
42 }
时间: 2024-10-13 19:30:54

px_ipc_name.c的相关文章

UNIX 进程间通讯(IPC)概念(Posix,System V IPC)

 IPC(Inter-Process Communication,进程间通讯)可以有三种信息共享方式(随文件系统,随内核,随共享内存).(当然这里虽然说是进程间通讯,其实也是可以和线程相通的). 相对的IPC的持续性(Persistence of IPC Object)也有三种: 随进程持续的(Process-Persistent IPC) IPC对象一直存在,直到最后拥有他的进程被关闭为止,典型的IPC有pipes(管道)和FIFOs(先进先出对象) 随内核持续的(Kernel-persist

unpipc.h

/* include unpipch */ /* Our own header.  Tabs are set for 4 spaces, not 8 */ #ifndef __unpipc_h #define __unpipc_h #include "../config.h" /* configuration options for current OS */ /* "../config.h" is generated by configure */ /* If a

Unix IPC之基于共享内存的计数器

目的 本文主要实现一个基于共享内存的计数器,通过父子进程对其访问. 本文程序需基于<<Unix网络编程-卷2>>的环境才能运行.程序中大写开头的函数为其小写同名函数的包裹函数,增加了错误处理信息. 1 函数介绍 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #include <sys/mman> /**  * Map addresses starting near ADDR an

open管道

匿名管道(pipe) 管道是一种最基本的IPC机制,由pipe函数创建: #include < unistd.h >int pipe(int filedes[2]); 调用pipe函数时在内核中开辟一块缓冲区(称为管道)用于通信,它有一个读端一个写端,然后通过filedes参数传出给用户程序两个文件描述符,filedes[0]指向管道的读端,filedes[1]指向管道的写端(很好记,就像0是标准输入1是标准输出一样).所以管道在用户程序看起来就像一个打开的文件,通过read(filedes[