拷贝图片
#include <my_head.h>
#include <pthread.h>
void *copy_png(void*arg);
int main(int argc,const char* argv[])
{
//创建复制文件
int c=open("./copy.png",O_WRONLY|O_CREAT|O_TRUNC,0777);
close(c);
//打开要复制的文件
int a=open("./apt.png",O_RDONLY);
//打开创建的新文件
int b=open("./copy.png",O_WRONLY);
//计算出文件的小
off_t size=lseek(a,0,SEEK_END);
//光标偏移到开头
lseek(a,0,SEEK_SET);
//创建线程
pthread_t copy;
pthread_create(©,NULL,copy_png,(void*)&size);
//定义变量
char buf;
//定义循环增量
off_t i=0;
//循环开始拷贝
while(1){
read(a,&buf,1);
write(b,&buf,1);
i++;
if(size/2==i){
break;
}
}
close(a);
close(b);
//等待线程结束
pthread_join(copy,NULL);
return 0;
}
void *copy_png(void*arg)
{
int a=open("./apt.png",O_RDONLY);
int b=open("./copy.png",O_WRONLY);
//偏移读取后半段
lseek(a,(*(off_t*)arg)/2,SEEK_SET);
//偏移拷贝后半段
lseek(b,(*(off_t*)arg)/2,SEEK_SET);
char buf;
while(1){
ssize_t res=read(a,&buf,1);
write(b,&buf,res);
if(0==res){
break;
}
}
close(a);
close(b);
//结束线程,返回给主线
pthread_exit(NULL);
}
#include <my_head.h>
char buf[]="1234567";//创建全局变量字符串
void *funA(void* arg);
void *funB(void* arg);
int main(int argc,const char* argv[])
{
//A线程创建
pthread_t A;
pthread_create(&A,NULL,funA,NULL);
//B线程创建
pthread_t B;
pthread_create(&B,NULL,funB,NULL);
//设置死循环,防止支线直接结束
while(1);
return 0;
}
void *funA(void* arg)
{
//A线程输出字符串
while(1){
puts(buf);
}
}
void *funB(void* arg)
{
//B线程逆置字符串
while(1){
int i=0,j=strlen(buf)-1;
while(i<j){
char n=buf[i];buf[i]=buf[j];buf[j]=n;
i++;
j--;
}
}
}
未出现不是顺序的字符串!