#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
int main(int argc, const char *argv[])
{
pid_t cpid=fork();
if(0==cpid)
{
while(1)
{
char tem[4];
for(int i=0;i<4;i++)
{
scanf("%c",&tem[i]);
getchar();
//printf("%c\n",tem[i]);
}
if(strcmp(tem,"quit")==0)
{
exit(0);
}
}
}
else if(cpid>0)
{
char tem[4];
while(1)
{
time_t t;
time(&t);
struct tm *tm;
tm=localtime(&t);
system("clear");
printf("%02d:%02d:%02d\n",tm->tm_hour,tm->tm_min,tm->tm_sec);
pid_t res=waitpid(cpid,NULL,WNOHANG);
if(res!=0)
{
return 0;
}
sleep(1);
}
}
return 0;
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
char buf[]="1234567";
int flag=0;
//--------------------线程1,循环打印
void* ptone(void* arg)
{
while(1)
{
if(flag==1)
{
printf("%s\n",buf);
flag=0;
}
}
}
//-------------------线程2,倒置字符串,不打印
void* pttwo(void* arg)
{
int len=strlen(buf)-1;
while(1)
{
if(0==flag)
{
char t;
for(int i=0,j=len;i<len/2;i++,j--)
{
t=buf[i];
buf[i]=buf[j];
buf[j]=t;
}
flag=1;
}
}
//pthread_exit(NULL);
}
int main(int argc, const char *argv[])
{
pthread_t tid1;
int res=pthread_create(&tid1,NULL,ptone,NULL);
if(0!=res)
printf("线程创建失败!\n");
pthread_t tid2;
res=pthread_create(&tid2,NULL,pttwo,NULL);
if(0!=res)
printf("线程创建失败!\n");
pthread_join(tid1,NULL);
return 0;
}