当前位置: 技术问答>linux和unix
thread specific data产生的stack smashing
来源: 互联网 发布时间:2016-02-12
本文导语: 大家好,今天学习编程遇到了一个问题,下面的一个程序使用了thread specific data,目的是为每一个线程保存一个日志文件的FILE流。源码如下: #include #include #include static pthread_key_t thread_log_key; void write_to_thread_...
大家好,今天学习编程遇到了一个问题,下面的一个程序使用了thread specific data,目的是为每一个线程保存一个日志文件的FILE流。源码如下:
#include
#include
#include
static pthread_key_t thread_log_key;
void write_to_thread_log(const char* message)
{
FILE* thread_log=(FILE*)pthread_getspecific(thread_log_key);
fprintf(thread_log,"%sn",message);
printf("thread_log_key=%xtthreadID=%xtthread_log=%xn",thread_log_key,pthread_self(),thread_log);
}
void close_thread_log(void* thread_log)
{
fclose((FILE*)thread_log);
}
void* thread_function(void* args)
{
char thread_log_filename[20];
FILE* thread_log;
sprintf(thread_log_filename,"thread%d.log",(int)pthread_self());
thread_log=fopen(thread_log_filename,"w");
pthread_setspecific(thread_log_key,thread_log);
write_to_thread_log("Thread starting.");
sleep(1);
return NULL;
}
int main()
{
int i;
pthread_t threads[5];
pthread_key_create(&thread_log_key,close_thread_log);
for(i=0;i
#include
#include
#include
static pthread_key_t thread_log_key;
void write_to_thread_log(const char* message)
{
FILE* thread_log=(FILE*)pthread_getspecific(thread_log_key);
fprintf(thread_log,"%sn",message);
printf("thread_log_key=%xtthreadID=%xtthread_log=%xn",thread_log_key,pthread_self(),thread_log);
}
void close_thread_log(void* thread_log)
{
fclose((FILE*)thread_log);
}
void* thread_function(void* args)
{
char thread_log_filename[20];
FILE* thread_log;
sprintf(thread_log_filename,"thread%d.log",(int)pthread_self());
thread_log=fopen(thread_log_filename,"w");
pthread_setspecific(thread_log_key,thread_log);
write_to_thread_log("Thread starting.");
sleep(1);
return NULL;
}
int main()
{
int i;
pthread_t threads[5];
pthread_key_create(&thread_log_key,close_thread_log);
for(i=0;i
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。