#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, const char *argv[])
{
int fp=open("./调试.jpg",O_RDONLY );
if(fp<0)
{
printf("打开失败\n");
return -1;
}
int fp1=open("cpy.jpg",O_RDWR | O_CREAT | O_TRUNC ,0777);
if(fp1<0)
{
printf("创建失败\n");
return -1;
}
off_t size=lseek(fp,0,SEEK_END);
lseek(fp,0,SEEK_SET);
pid_t temp=fork();
char yi[20];
sprintf(yi,"%d",fp);
char er[20];
sprintf(er,"%d",fp1);
char dax[20];
sprintf(dax,"%ld",size);
if(temp>0)
{
execl("./yi",yi,er,dax,NULL);
}
else
{
execl("./er",yi,er,dax,NULL);
}
close(fp);
close(fp1);
return 0;
}
运行效果
ubuntu@ubuntu:~/文件IO/拷贝练习$ rm cpy.jpg
ubuntu@ubuntu:~/文件IO/拷贝练习$ ls -l
总用量 312
-rw-rw-r-- 1 ubuntu ubuntu 547 四月 15 19:45 01.c
-rwxrwxr-x 1 ubuntu ubuntu 8608 四月 15 19:44 a.out
-rwxrwxr-x 1 ubuntu ubuntu 8480 四月 15 19:32 er
-rw-rw-r-- 1 ubuntu ubuntu 751 四月 15 19:44 main.c
-rwxrwxr-x 1 ubuntu ubuntu 8520 四月 15 19:29 yi
-rwxrwxrwx 1 ubuntu ubuntu 272783 四月 14 20:58 调试.jpg
ubuntu@ubuntu:~/文件IO/拷贝练习$ gcc main.c
ubuntu@ubuntu:~/文件IO/拷贝练习$ ./a.out
ubuntu@ubuntu:~/文件IO/拷贝练习$ ls -l
总用量 580
-rw-rw-r-- 1 ubuntu ubuntu 547 四月 15 19:45 01.c
-rwxrwxr-x 1 ubuntu ubuntu 8608 四月 15 19:46 a.out
-rwxrwxr-x 1 ubuntu ubuntu 272783 四月 15 19:46 cpy.jpg
-rwxrwxr-x 1 ubuntu ubuntu 8480 四月 15 19:32 er
-rw-rw-r-- 1 ubuntu ubuntu 750 四月 15 19:46 main.c
-rwxrwxr-x 1 ubuntu ubuntu 8520 四月 15 19:29 yi
-rwxrwxrwx 1 ubuntu ubuntu 272783 四月 14 20:58 调试.jpg
ubuntu@ubuntu:~/文件IO/拷贝练习$ diff 调试.jpg cpy.jpg
ubuntu@ubuntu:~/文件IO/拷贝练习$
#include <sys/wait.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, const char *argv[])
{
pid_t pp=fork();
if(pp>0)
{
printf("你有一个僵尸进程\n");
while(1)
{
sleep(1);
}
}
return 0;
}
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, const char *argv[])
{
pid_t pp=fork();
if(pp>0)
{
printf("你有一个孤儿进程\n");
}
else
{
while(1)
{
printf("你是一个孤儿\n");
sleep(1);
}
}
return 0;
}
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <sys/stat.h>
int main(int argc, const char *argv[])
{
pid_t fp=fork();
if(fp==0)
{
setsid();
chdir("/");
umask(0);
for(int i=0;i<1024;i++)
{
close(i);
}
while(1)
{
printf("守护神\n");
sleep(1);
}
}
return 0;
}