extern int makethread( void * ( * ) ( void * ), void * );
extern作用:函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用
makethread函数有两个参数,第一个参数是一个函数指针,该函数指针指向一个返回为void* 且带有一个void*的形式参数。
第二个参数是一个类型为void的指针。
timespec结构:
-
struct timespec
-
{
-
time_t tv_sec; /*second*/
-
long tv_nsec; /*nanosecond*/
-
}
自1970年1月1号00:00:00开始计时到现在所经历的秒数又纳秒数
int nanosleep(const struct timespec *req, struct timespec *rem);
这个函数功能是暂停某个进程直到你规定的时间后恢复,参数req就是你要暂停的时间,由于调用nanosleep是是进程进入TASK_INTERRUPTIBLE,这种状态是会相应信号而进入
TASK_RUNNING状态的,这就意味着有可能会没有等到你规定的时间就因为其它信号而唤醒,此时函数返回-1,切还剩余的时间会被记录在rem中。
例如:自定义SIGUSR1,当使用 kill -USER1 [pid] 触发该信号,nanosleep函数将返回。
-
#include <time.h>
-
#include <signal.h>
-
#include <memory.h>
-
#include <stdio.h>
-
-
void sig_usr(int signo)
-
{
-
printf("user signal\n");
-
}
-
-
int main()
-
{
-
signal(SIGUSR1,sig_usr);
-
struct timespec time1,time2;
-
memset(&time1,0,sizeof(time));
-
memset(&time2,0,sizeof(time));
-
time1.tv_sec = 10000;
-
nanosleep(&time1,&time2);
-
printf("%d--->%d\n",time2.tv_sec,time2.tv_nsec);
-
return 0;
-
}
timeval是一个结构体,在time.h中定义为:
struct timeval
{
__time_t tv_sec; /* Seconds. */
__suseconds_t tv_usec; /* Microseconds. */
};
其中,tv_sec为Epoch(1970-1-1零点零分)到创建struct timeval时的秒数,tv_usec为微秒数,即秒后面的零头。
阅读(433) | 评论(0) | 转发(0) |