main.c
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<pthread.h>
void* call_back(void*agv)
{
char input[5]={0};
loop:
scanf("%s",input);
char str[5]="quit";
if(!strcmp(str,input)){
*(int*)agv=1;
return NULL;
}else{
fflush(stdin);
goto loop;
}
}
int main(int argc, const char *argv[])
{
pthread_t pid;
int flag=0;
pthread_create(&pid,NULL,call_back,&flag);
time_t t;
while (1)
{
t=time(NULL);
struct tm *info=NULL;
info=localtime(&t);
system("clear");
printf("%4d-%02d-%02d %02d:%02d:%02d\n",info->tm_year+1900,info->tm_mon+1,info->tm_mday,info->tm_hour,info->tm_min,info->tm_sec);
printf("输入quit时间停止\n");
sleep(1);
if(1==(int)flag){
break;
}
}
return 0;
}
通过判断线程结束实现打印翻转字符
main.c
#include<stdio.h>
#include<pthread.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
char buf[]="1234567";
void* callback_a(void*value){
printf("%s\n",buf);
pthread_exit(NULL);
}
void* callback_b(void*value){
int len=strlen(buf);
char t;
int i;
for(i=0;i<len/2;i++){
t=buf[i];
buf[i]=buf[len-1-i];
buf[len-1-i]=t;
}
pthread_exit(NULL);
}
int main(int argc, const char *argv[])
{
int flag=1;
pthread_t pida;
pthread_t pidb;
int i=0;
while(i<20)
{
i++;
if(1==flag){
if(0!=(pthread_create(&pida,NULL,callback_a,NULL)))
{
printf("线程A创建失败\n");
break;
}
if(0!=(pthread_join(pida,NULL)))
{
printf("线程A退出失败\n");
break;
}
flag=0;
}
if(0==flag){
if(0!=(pthread_create(&pidb,NULL,callback_b,NULL)))
{
printf("线程B创建失败\n");
break;
}
if(0!=(pthread_join(pida,NULL)))
{
printf("线程A退出失败\n");
break;
}
flag=1;
}
}
return 0;
}