Chinaunix首页 | 论坛 | 博客
  • 博客访问: 39297
  • 博文数量: 29
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 285
  • 用 户 组: 普通用户
  • 注册时间: 2014-12-08 13:03
个人简介

海纳百川有容乃大,壁立千仞无欲则刚。

文章分类
文章存档

2015年(17)

2014年(12)

我的朋友

分类: LINUX

2014-12-16 17:56:20

extern int makethread( void * ( * ) ( void * ), void * );

extern作用:函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用

makethread函数有两个参数,第一个参数是一个函数指针,该函数指针指向一个返回为void* 且带有一个void*的形式参数。
                                          第二个参数是一个类型为void的指针。

timespec结构:
  1. struct timespec
  2. {
  3.       time_t tv_sec; /*second*/
  4.       long tv_nsec;  /*nanosecond*/
  5. }
自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函数将返回。
  1. #include <time.h>
  2. #include <signal.h>
  3. #include <memory.h>
  4. #include <stdio.h>

  5. void sig_usr(int signo)
  6. {
  7.         printf("user signal\n");
  8. }

  9. int main()
  10. {
  11.         signal(SIGUSR1,sig_usr);
  12.         struct timespec time1,time2;
  13.         memset(&time1,0,sizeof(time));
  14.         memset(&time2,0,sizeof(time));
  15.         time1.tv_sec = 10000;
  16.         nanosleep(&time1,&time2);
  17.         printf("%d--->%d\n",time2.tv_sec,time2.tv_nsec);
  18.         return 0;
  19. }
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) |
给主人留下些什么吧!~~