任务

定时器任务

数据结构定义

typedef struct TTaskTimer_s TTaskTimer; //定时器任务

typedef Tint TTimeout; //超时,单位毫秒

回调函数类型定义

定时器任务的执行函数回调

typedef void (*TTaskTimer_Func)(TTaskTimer *ptimer, TTimeout timeout, void *arg);

功能:定时器回调处理函数

参数

参数 说明
ptimer 定时器对象
timeout 自动触发的时间间隔
arg 任务创建时传递的用户参数

返回值:无

定时器操作接口

获取运行时长

TTimeout TTaskGetTimeout(void);

功能:获取系统当前运行的时长

参数:无

返回值:系统当前运行时长,单位毫秒

延时函数

void TTaskDelay(TTimeout msecs);

功能:暂停程序执行一段时间

参数

参数 说明
msecs 暂停时长

返回值:无

创建定时器

TTaskTimer * TTaskAddTimer(TTimeout period, TTaskTimer_Func callback, void *arg);

功能:创建一个定时器任务,被创建后的状态是无效状态

参数

参数 说明
period 定时器循环间隔时间,单位毫秒
callback 任务的回调函数
arg 传递到回调函数中

返回值:定时器任务对象

示例

/*创建一个定时器任务*/
void timer_callback(TTaskTimer *ptimer, TTimeout timeout, void *arg)
{
    /*函数执行语句*/
}
/*---------------*/
TTaskTimer *timer = TTaskAddTimer(5000, timer_callback, NULL);

改变状态

void TTaskEnableTimer(TTaskTimer *timer, Tbool if_enable);

功能: 改变定时器任务的执行状态

参数

参数 说明
timer 定时器对象
if_enable 为TRUE定时器生效,为FALSE定时器失效

返回值:无

示例

/*启动定时器*/
TTaskEnableTimer(timer, TRUE);

重置任务

void TTaskResetTimer(TTaskTimer *timer);

功能:使定时器重新记时

参数

参数 说明
timer 定时器对象

返回值:无

示例

TTaskResetTimer(timer);

间隔时间

void TTaskChangeTimeout(TTaskTimer *timer, TTimeout period);

功能:修改定时器对象的循环间隔时间

参数

参数 说明
timer 定时器对象
period 定时器的间隔时间

返回值:无

示例

TTaskChangeTimeout(timer, 10000);

销毁定时器

void TTaskDestroyTimer(TTaskTimer *timer);

功能:销毁一个定时器任务

参数

参数 说明
timer 定时器对象

返回值:无

示例

TTaskDestroyTimer(timer);

文件描述符任务

数据结构定义

typedef struct TTaskFile_s TTaskFile; //文件描述符任务

回调函数类型定义

文件描述符任务的执行函数回调

typedef void (*TTaskFile_Func)(TTaskFile *pfd, Tint fd, Tint type, void *arg);

功能:文件描述符回调处理函数

参数

参数 说明
pfd 文件描述符任务
fd 要监视的文件句柄
type 要监视的事件类型
arg 任务创建时传递的用户参数

返回值:无

文件描述符任务操作接口

创建任务

TTaskFile *TTaskAddFile(Tint fd, TTaskFile_Func callback, Tint type, void *arg);

功能:创建一个文件描述符对象

参数

参数 说明
fd 要监视的文件句柄
callback 任务的回调函数
type 实际发生的事件类型
arg 传递到回调函数中

返回值:文件描述符对象

示例

/*创建一个文件描述符任务*/
void file_callback(TTaskFile *pfd, Tint fd, Tint type, void *arg)
{
    /*函数执行语句*/
}
/*------------------*/
pipe(fd);
TTaskFile *file = TTaskAddFile(fd, file_callback, T_IO_READ, NULL);

查询任务

TTaskFile *TTaskFindFile(Tint fd, TTaskFile_Func callback, void *arg);

功能:查询文件描述符任务是否存在

参数

参数 说明
fd 文件句柄
callback 任务的回调函数
arg 传递到回调函数中

返回值:存在返回文件描述符对象,否则返回NULL

切换类型

void TTaskChangeFileType(TTaskFile *file, Tint type);

功能:修改文件描述符对象监视的事件类型

参数

参数 说明
file 文件描述符对象
type 要监视的事件类型

返回值:无

示例

/*切换文件描述符对象监视写入数据*/
TTaskChangeFileType(file, T_IO_WRITE);

销毁任务

void TTaskDestroyFile(TTaskFile *pfd);

功能:销毁文件描述符对象

参数

参数 说明
pfd 文件描述符对象

返回值:无

读管道

Tint TPipeRead(Tint fd, Tuint8 *b, Tint n);

功能:从管道fd中读取n个字节到b

参数

参数 说明
fd 传入句柄
b 读到的字节存储地址
n 读取字节个数

返回值:成功返回0,失败返回-1,未读满n个字符认定为失败

写管道

Tint TPipeWrite(Tint fd, const Tuint8 *b, Tint n);

功能:向管道fd中写入b中的n个字节

参数

参数 说明
fd 传入句柄
b 写入字符的地址
n 字节个数

返回值:成功返回0,失败返回-1

取消读管道

Tint TPipeReadDiscard(Tint fd, Tint n);

功能:取消从管道fd中读取n个字节

参数

参数 说明
fd 传入句柄
n 字节个数

返回值:成功返回0,失败返回-1

延时读管道

Tint TPipeReadTimeout(Tint fd, Tuint8 *b, Tint n, TTimeout t);

功能:从管道fd中读取n个字节到b,最长等待时间t

参数

参数 说明
fd 传入句柄
b 读到的字节存储地址
n 读取字节个数
t 超时timeout 单位毫秒

返回值:成功返回0,失败返回-1

检查文件的事件

Tint TFileCheck(Tint fd, Tint type);

功能:检查fd的是否监听type事件类型

参数

参数 说明
fd 传入句柄
type 事件类型

返回值:存在返回1, 不存在返回0, 出错返回-1

延时检查事件

Tint TFileCheckTimeout(Tint fd, Tint type, TTimeout t);

功能:检查fd的是否监听type事件类型,最长延时t

参数

参数 说明
fd 传入句柄
type 事件类型
t 超时timeout 单位ms,t<0表示永远阻塞

返回值:存在返回1, 不存在返回0, 出错返回-1

读文件

Tint TFileRead(Tint fd, Tuint8 *b, Tint n);

功能:从文件fd中读取n个字节到b

参数

参数 说明
fd 传入句柄
b 读到的字节存储地址
n 读取字节个数

返回值:成功返回0,失败返回-1

写文件

Tint TFileWrite(Tint fd, const Tuint8 *b, Tint n);

功能:向文件fd中写入b中的n个字节

参数

参数 说明
fd 传入句柄
b 读到的字节存储地址
n 读取字节个数

返回值:成功返回0,失败返回-1

打开网络套接字

Tint TOpenSocket(Tint family, Tint type, const char *addr, Tint port);

功能:打开一个网络套接字

参数

参数 说明
family IP 地址类型
type 数据传输方式
addr ip地址
port 端口号

返回值:返回句柄

连接网络套接字

Tint TConnectSocket(Tint family, Tint type, const char *peeraddr, Tint port);

功能:连接一个网络套接字

参数

参数 说明
family IP 地址类型
type 数据传输方式
peeraddr 连接对方的ip地址
port 端口号

返回值:成功则返回0,失败返回非0

简单任务

数据结构定义

typedef struct TTaskOnce_s TTaskOnce; //简单任务

回调函数类型定义

简单任务的执行回调函数

typedef void (*TTaskOnce_Func)(TTaskOnce *ponce, Tint n, void *arg);

功能:简单任务回调处理函数

参数

参数 说明
ponce 任务对象
n 触发任务时传递的用户参数
arg 任务创建时传递的用户参数

返回值:无

TTaskSignal的回调函数

typedef void (*TTaskSignal_Func)(int sig);

功能:信号的回调处理函数

参数

参数 说明
sig 传入信号编号

返回值:无

shell语句回调处理函数

typedef void (*TProcessOutput_Func)(Tint result, const char *output, Tint len, void *arg);

功能:shell语句回调处理函数 result 取值包括:

    - WIFEXITED(result):正常退出
    - WEXITSTATUS(result):退出代码
    - WIFSIGNALED(result):信号退出
    - WTERMSIG(result):退出信号
    - WIFCONTINUED(result):没有结束,继续运行(result == __W_CONTINUED)

参数

参数 说明
result process 结束的原因
output process 输出的内容
len output的长度
arg 执行函数传递的参数

返回值:无

Shell 命令执行类型定义

#define NEED_WAIT        0x80    //以后会调用TProcessWait()&nbsp;同步

#define NO_KILL_GROUP    0x40    //进程退出时,是否自动杀掉进程组

#define OUTPUT_MODE_NO    0x00    //用户只想处理命令结束

简单任务操作接口

获取状态

Tint TTaskGetStatus(void *pfd_timer_once);

功能:获取任务对象的状态

参数

参数 说明
pfd_timer_once 任务对象

返回值:0:闲置,1:预备,2:执行,3:摧毁,4:失效

创建任务

TTaskOnce * TTaskAddOnce(TTaskOnce_Func callback, void *arg);

功能:创建一个简单任务,创建后需要主动触发

参数

参数 说明
callback 任务的回调函数
arg 传递到回调函数中

返回值:简单任务对象

示例

/*创建一个简单任务*/
void TTaskAddOnce(TTaskOnce *ponce, Tint n, void *arg)
{
    /*函数执行语句*/
}
/*---------------*/
TTaskOnce *once = TTaskAddOnce(once_callback, NULL);

触发任务

void TTaskTriggerOnce(TTaskOnce *once, Tint n);

功能:触发简单任务,不会立刻执行,等待程序进入loop后执行

参数

参数 说明
once 任务对象
n 传给执行函数的参数 n

返回值:无

示例

TTaskTriggerOnce(once, 1);

延时唤醒任务

void TTaskAwakeTimeout(TTimeout timeout);

功能:在timeout时间之后唤醒所有任务线程

参数

参数 说明
timeout 最长等待时间

返回值:无

创建信号任务

void TTaskSignal(int sig, TTaskSignal_Func handler);

功能:和系统函数signal() 相同, 但是: 1.没有返回值; 2.保证handler 不会重入; 3.handler 和普通的回调函数一样, 没有调用函数的限制; 4.如果handler==NULL, 那么该函数内部会调用signal(sig, SIG_IGN) 5.如果handler==-1, 那么该函数内部会调用signal(sig, SIG_DFL)

参数

参数 说明
sig 指定的信号编号
handler 指定程序可以处理信号的三种方式之一

返回值:无

执行Shell命令

T_ID TProcessShellExec(const char *cmd, Tuint32 flags, TProcessOutput_Func output_func, void *func_arg);

功能:执行Shell命令

    - 如果 output_func 为 NULL 表示用户不关心该命令的输出,也没有结束处理函数。
    - 注意同时能够运行的 shell 子进程个数做了限制,目前是256
    - 命令字符串目前最长2048 个字节
    - 参数目前最多128 个

参数

参数 说明
cmd 要执行的命令
flags 取值范围参考 Shell 命令执行类型定义
output_func 表示命令 cmd 的输出处理函数和结束处理函数
func_arg 传递到回调函数中

返回值:Process ID

示例

/*执行shell语句*/
void output_func(Tint result, const char *output, Tint len, void *arg)
{
    /*函数执行语句*/
}
TProcessShellExec("echo BlueStar", NEED_WAIT, output_func, NULL);

等待Shell命令执行

Tbool TProcessWait(T_ID id, TTimeout timeout, Tbool if_kill, Tint *result);

功能:超时等待执行Shell命令完毕

参数

参数 说明
id 函数 TProcessShellExec 返回的 Process ID
timeout 以毫秒为单位,<0 表示永远等待,=0 表示不等待
if_kill 表示如果没有执行完是否强制 kill (该函数仍然返回FALSE)
result 在该函数返回 TRUE 的情况下参数 result 返回 Shell 命令的执行结果

返回值:执行完毕返回TRUE,否则返回FALES,如果执行时没有 NEED_WAIT,可能该进程已经退出了,这时也返回 FALSE

程序路径获取

程序路径操作接口

获取当前程序文件在文件系统中的绝对路径

const char *TGetExecutePath(const char *suffix);

功能:获取当前程序文件在文件系统中的绝对路径

参数

参数 说明
suffix 文件路径,可以是绝对路径/相对路径或NULL

返回值:一个绝对路径

    - 当 suffix 为 NULL 时,返回当前程序文件在文件系统中的目录的绝对路径
    - 当 suffix 为绝对路径时,就返回 suffix 的内容
    - 当 suffix 为相对路径时,返回相对于当前程序文件在文件系统中的目录的绝对路径

示例

/*当前执行程序路径:/home/name/example/bin/*/
TGetExecutePath(NULL);/*返回/home/name/example/bin/*/
TGetExecutePath("/home/name/example/src");/*返回/home/name/example/src*/
TGetExecutePath("../src");/*返回/home/name/example/bin/../src*/

获取程序可读写目录的绝对路径

const char *TGetExecuteVarPath(const char * suffix);

功能:获取程序可读写目录的绝对路径

参数

参数 说明
suffix NULL

返回值:程序可读写目录的绝对路径

获取调用该函数的函数所在文件的绝对路径

const char *TGetFunctionPath(const char *suffix);

功能:获取调用该函数的函数所在文件的绝对路径,如用于获取动态链接库所在的路径,用法和 TGetExecutePath 相同

参数

参数 说明
suffix NULL

返回值:调用该函数的函数所在文件的绝对路径

日志输出控制

数据结构定义

enum TLogLevelEnum

打印等级

成员
TLOG_NONE       =0,
TLOG_FATAL      =0x10, //重大错误信息
TLOG_ERROR      =0x20, //一般错误信息
TLOG_WARNING    =0x30, //警告信息
TLOG_INFO       =0x40, //一般信息
TLOG_DEBUG      =0x50, //调试信息

日志操作接口

设置输出级别

void TLogSetLevel(TLogLevelEnum level);

功能:主动设置输出级别,不从TLOG环境变量获取

参数

参数 说明
level 输出日志等级

返回值:无

results matching ""

    No results matching ""