第二十次作业

 #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;
 }
                                                    

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值