#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <time.h>
#include <pthread.h>
#include <fcntl.h>
void * time_tid(void * arg)
{
time_t t=time(NULL);
time_t ti;
struct tm* info=NULL;
while(1)
{
system("clear");
time(&ti);
info=localtime(&ti);
fprintf(stderr,"%d-%02d-%02d %02d:%02d:%02d\r",\
info->tm_year+1900,info->tm_mon+1,info->tm_mday,\
info->tm_hour,info->tm_min,info->tm_sec);
sleep(1);
}
return NULL;
}
int main(int argc, const char *argv[])
{
pthread_t tid;
if(pthread_create(&tid,NULL,time_tid,NULL)!=0)
{
fprintf(stderr,"pthread_create failed __%d__\n", __LINE__);
return -1;
}
char s[]="quit";
char ss[10]="";
while(1)
{
scanf("%s",ss);
if(0==strcmp(ss,s))
{
pthread_detach(tid);
return 0;
}
}
// return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <pthread.h>
char buf[]="1234567";
pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;
void* buf_tid_A(void* arg)
{
while(1)
{
pthread_mutex_lock(&mutex);
printf("%s\n",buf);
pthread_mutex_unlock(&mutex);
}
pthread_exit(NULL);
}
void* buf_tid_B(void* arg)
{
char* p=buf;
int i=0;
int k=strlen(buf)-1;
while(1)
{
pthread_mutex_lock(&mutex);
while(i<k)
{
int c=*(p+i);
*(p+i)=*(p+k);
*(p+k)=c;
i++;
k--;
}
pthread_mutex_unlock(&mutex);
}
}
int main(int argc, const char *argv[])
{
pthread_t tid_A;
if(pthread_create(&tid_A,NULL,buf_tid_A,NULL)!=0)
{
fprintf(stderr,"pthread_create failed__%d__\n",__LINE__);
return -1;
}
pthread_t tid_B;
if(pthread_create(&tid_B,NULL,buf_tid_B,NULL)!=0)
{
fprintf(stderr,"pthread_create failed__%d__\n",__LINE__);
return -1;
}
pthread_join(tid_A,NULL);
pthread_join(tid_B,NULL);
pthread_mutex_destroy(&mutex);
return 0;
}