📄 mypipe_linux.c
字号:
/*
*
*mypipe.c 读写管道 lin shao chuan
*
*/
#include "mypipe.h"
#include <stdlib.h>
#include <unistd.h>
#include "os_def.h"
#include "mylog.h"
typedef struct __mypipe_t_
{
int fd[2];
HMYMEMPOOL hm;
}mypipe_t;
/*
*
*创建管道
*
*/
HMYPIPE MyPipeConstruct(HMYMEMPOOL hm)
{
int ret = 0;
mypipe_t * p = (mypipe_t *)MyMemPoolMalloc(hm, sizeof(*p));
if(NULL == p)
return NULL;
p->hm = hm;
ret = pipe(p->fd);
if(0 != ret)
{
LOG_WARN(("fail create pipe"));
MyMemPoolFree(hm, p);
return NULL;
}
return (HMYPIPE)p;
}
/*
*
*销毁管道
*
*/
void MyPipeDestruct(HMYPIPE hp)
{
mypipe_t * p = (mypipe_t *)hp;
if(NULL == p)
return;
close(p->fd[0]);
close(p->fd[1]);
MyMemPoolFree(p->hm, p);
}
/*
*
*读管道
*
*/
size_t MyPipeRead(HMYPIPE hp, void * data, size_t data_len)
{
mypipe_t * p = (mypipe_t *)hp;
if(NULL == p)
return 0;
return read(p->fd[0], data, data_len);
}
/*
*
*写管道
*
*/
size_t MyPipeWrite(HMYPIPE hp, void * data, size_t data_len)
{
mypipe_t * p = (mypipe_t *)hp;
if(NULL == p)
return 0;
return write(p->fd[1], data, data_len);
}
/*
*
*获取读fd
*
*/
int MyPipeGetReadFD(HMYPIPE hp)
{
mypipe_t * p = (mypipe_t *)hp;
if(NULL == p)
return INVALID_FD;
return p->fd[0];
}
/*
*
*获取写fd
*
*/
int MyPipeGetWriteFD(HMYPIPE hp)
{
mypipe_t * p = (mypipe_t *)hp;
if(NULL == p)
return INVALID_FD;
return p->fd[1];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -