strace常见系统调用

1.Sleep,Usleep都是在库函数中实现,最终都会调用nanosleep的系统调用

以usleep(1000)为例,用strace进行跟踪

int nanosleep(const struct timespec *req, struct timespec *rem);
struct timespec
{
   time_t  tv_sec;
   long     tv_nsec;
}

这个函数功能是暂停某个进程直到你规定的时间后恢复,参数req就是你要暂停的时间,其中req->tv_sec是以秒为单位,而tv_nsec以毫微秒为单位(10的-9次方秒)。由于调用nanosleep是是进程进入TASK_INTERRUPTIBLE,这种状态是会相应信号而进入TASK_RUNNING状态的,这就意味着有可能会没有等到你规定的时间就因为其它信号而唤醒,此时函数返回-1,切还剩余的时间会被记录在rem中。

2.memcpy直接在库函数里面实现,不经过系统调用

posted @ 2011-09-25 12:23  only_eVonne  阅读(663)  评论(0编辑  收藏  举报