22.11.10 IO day4

 22.11.10 IO day4_第1张图片

 

1. 用父子进程拷贝一张图片,用文件 IO 实现,要求 子进程拷贝后半部分,父进程拷贝前半部
分,按照 cpu 调度机制同时执行

22.11.10 IO day4_第2张图片

 22.11.10 IO day4_第3张图片

ubuntu@ubuntu:~/yuyu/yu/7$ gcc 5.c
ubuntu@ubuntu:~/yuyu/yu/7$ ./a.out
36783
36783
父进程拷贝前半部分成功
ubuntu@ubuntu:~/yuyu/yu/7$ 子进程拷贝后半部分成功
./a.out
36783
36783
父进程拷贝前半部分成功
ubuntu@ubuntu:~/yuyu/yu/7$ ./a.out子进程拷贝后半部分成功

ubuntu@ubuntu:~/yuyu/yu/7$ gcc 5.c
ubuntu@ubuntu:~/yuyu/yu/7$ ./a.out
36783
子进程拷贝后半部分成功
36783
父进程拷贝前半部分成功
ubuntu@ubuntu:~/yuyu/yu/7$ ls -l
total 132
-rwxrw-rw- 1 ubuntu ubuntu 36783 11月 10 19:41 1111.jpg
-rw-r--r-- 1 ubuntu ubuntu   702 11月 10 09:34 1.c
-rw-r--r-- 1 ubuntu ubuntu   345 11月 10 14:15 2.c
-rw-r--r-x 1 ubuntu ubuntu 18391 11月 10 20:50 2.jpg
-rw-r--r-x 1 ubuntu ubuntu 36783 11月 10 19:50 2.png
-rw-r--r-- 1 ubuntu ubuntu   186 11月 10 19:03 3.c
-rw-r--r-- 1 ubuntu ubuntu  1185 11月 10 15:31 4.c
-rw-r--r-- 1 ubuntu ubuntu  1877 11月 10 20:49 5.c
-rwxr-xr-x 1 ubuntu ubuntu 12832 11月 10 20:50 a.out
-rw-r--r-x 1 ubuntu ubuntu   702 11月 10 15:31 w.c
ubuntu@ubuntu:~/yuyu/yu/7$ rm 2.png
ubuntu@ubuntu:~/yuyu/yu/7$ diff 1111.jpg 2.jpg
Binary files 1111.jpg and 2.jpg differ
ubuntu@ubuntu:~/yuyu/yu/7$ rm 2.jpg
ubuntu@ubuntu:~/yuyu/yu/7$ ls -l
total 76
-rwxrw-rw- 1 ubuntu ubuntu 36783 11月 10 19:41 1111.jpg
-rw-r--r-- 1 ubuntu ubuntu   702 11月 10 09:34 1.c
-rw-r--r-- 1 ubuntu ubuntu   345 11月 10 14:15 2.c
-rw-r--r-- 1 ubuntu ubuntu   186 11月 10 19:03 3.c
-rw-r--r-- 1 ubuntu ubuntu  1185 11月 10 15:31 4.c
-rw-r--r-- 1 ubuntu ubuntu  1877 11月 10 20:49 5.c
-rwxr-xr-x 1 ubuntu ubuntu 12832 11月 10 20:50 a.out
-rw-r--r-x 1 ubuntu ubuntu   702 11月 10 15:31 w.c
ubuntu@ubuntu:~/yuyu/yu/7$ gcc 5.c
ubuntu@ubuntu:~/yuyu/yu/7$ ./a.out
open: No such file or directory
36783
父进程拷贝前半部分成功
ubuntu@ubuntu:~/yuyu/yu/7$ ./a.out
36783
子进程拷贝后半部分成功
36783
父进程拷贝前半部分成功
ubuntu@ubuntu:~/yuyu/yu/7$ 
ubuntu@ubuntu:~/yuyu/yu/7$ 
ubuntu@ubuntu:~/yuyu/yu/7$ ls -l
total 96
-rwxrw-rw- 1 ubuntu ubuntu 36783 11月 10 19:41 1111.jpg
-rw-r--r-- 1 ubuntu ubuntu   702 11月 10 09:34 1.c
-rw-r--r-- 1 ubuntu ubuntu   345 11月 10 14:15 2.c
-rw-r--r-x 1 ubuntu ubuntu 18391 11月 10 20:53 2.jpg
-rw-r--r-- 1 ubuntu ubuntu   186 11月 10 19:03 3.c
-rw-r--r-- 1 ubuntu ubuntu  1185 11月 10 15:31 4.c
-rw-r--r-- 1 ubuntu ubuntu  1877 11月 10 20:49 5.c
-rwxr-xr-x 1 ubuntu ubuntu 12832 11月 10 20:52 a.out
-rw-r--r-x 1 ubuntu ubuntu   702 11月 10 15:31 w.c
ubuntu@ubuntu:~/yuyu/yu/7$ eog 2.png
ubuntu@ubuntu:~/yuyu/yu/7$ rm 2.jpg
ubuntu@ubuntu:~/yuyu/yu/7$ gcc 5.c
ubuntu@ubuntu:~/yuyu/yu/7$ ./a.out
open: No such file or directory
36783
父进程拷贝前半部分成功
ubuntu@ubuntu:~/yuyu/yu/7$ ls -l
total 96
-rwxrw-rw- 1 ubuntu ubuntu 36783 11月 10 19:41 1111.jpg
-rw-r--r-- 1 ubuntu ubuntu   702 11月 10 09:34 1.c
-rw-r--r-- 1 ubuntu ubuntu   345 11月 10 14:15 2.c
-rw-r--r-x 1 ubuntu ubuntu 18391 11月 10 20:57 2.jpg
-rw-r--r-- 1 ubuntu ubuntu   186 11月 10 19:03 3.c
-rw-r--r-- 1 ubuntu ubuntu  1185 11月 10 15:31 4.c
-rw-r--r-- 1 ubuntu ubuntu  1905 11月 10 20:57 5.c
-rwxr-xr-x 1 ubuntu ubuntu 12832 11月 10 20:57 a.out
-rw-r--r-x 1 ubuntu ubuntu   702 11月 10 15:31 w.c
ubuntu@ubuntu:~/yuyu/yu/7$ rm 2.jpg
ubuntu@ubuntu:~/yuyu/yu/7$ gcc 5.c
ubuntu@ubuntu:~/yuyu/yu/7$ ./a.out
open: No such file or directory
36783
父进程拷贝前半部分成功
ubuntu@ubuntu:~/yuyu/yu/7$ ./a.out
36783
子进程拷贝后半部分成功
^[[A36783
父进程拷贝前半部分成功
ubuntu@ubuntu:~/yuyu/yu/7$ ./a.out^C
ubuntu@ubuntu:~/yuyu/yu/7$ ls -l
total 96
-rwxrw-rw- 1 ubuntu ubuntu 36783 11月 10 19:41 1111.jpg
-rw-r--r-- 1 ubuntu ubuntu   702 11月 10 09:34 1.c
-rw-r--r-- 1 ubuntu ubuntu   345 11月 10 14:15 2.c
-rw-r--r-x 1 ubuntu ubuntu 18391 11月 10 20:59 2.jpg
-rw-r--r-- 1 ubuntu ubuntu   186 11月 10 19:03 3.c
-rw-r--r-- 1 ubuntu ubuntu  1185 11月 10 15:31 4.c
-rw-r--r-- 1 ubuntu ubuntu  1915 11月 10 20:59 5.c
-rwxr-xr-x 1 ubuntu ubuntu 12832 11月 10 20:59 a.out
-rw-r--r-x 1 ubuntu ubuntu   702 11月 10 15:31 w.c
ubuntu@ubuntu:~/yuyu/yu/7$ rm 2.jpg
ubuntu@ubuntu:~/yuyu/yu/7$ gcc 5.c
ubuntu@ubuntu:~/yuyu/yu/7$ ./a.out
36783
36783
父进程拷贝前半部分成功
ubuntu@ubuntu:~/yuyu/yu/7$ 子进程拷贝后半部分成功
./
bash: ./: Is a directory
ubuntu@ubuntu:~/yuyu/yu/7$ ls -l
total 112
-rwxrw-rw- 1 ubuntu ubuntu 36783 11月 10 19:41 1111.jpg
-rw-r--r-- 1 ubuntu ubuntu   702 11月 10 09:34 1.c
-rw-r--r-- 1 ubuntu ubuntu   345 11月 10 14:15 2.c
-rw-r--r-x 1 ubuntu ubuntu 36783 11月 10 21:00 2.jpg
-rw-r--r-- 1 ubuntu ubuntu   186 11月 10 19:03 3.c
-rw-r--r-- 1 ubuntu ubuntu  1185 11月 10 15:31 4.c
-rw-r--r-- 1 ubuntu ubuntu  1929 11月 10 21:01 5.c
-rwxr-xr-x 1 ubuntu ubuntu 12784 11月 10 21:00 a.out
-rw-r--r-x 1 ubuntu ubuntu   702 11月 10 15:31 w.c
ubuntu@ubuntu:~/yuyu/yu/7$ rm 2.jpg
ubuntu@ubuntu:~/yuyu/yu/7$ gcc 5.c
ubuntu@ubuntu:~/yuyu/yu/7$ ./a.out
36783
父进程拷贝前半部分成功
36783
子进程拷贝后半部分成功
ubuntu@ubuntu:~/yuyu/yu/7$ ls -l
total 112
-rwxrw-rw- 1 ubuntu ubuntu 36783 11月 10 19:41 1111.jpg
-rw-r--r-- 1 ubuntu ubuntu   702 11月 10 09:34 1.c
-rw-r--r-- 1 ubuntu ubuntu   345 11月 10 14:15 2.c
-rw-r--r-x 1 ubuntu ubuntu 36783 11月 10 21:01 2.jpg
-rw-r--r-- 1 ubuntu ubuntu   186 11月 10 19:03 3.c
-rw-r--r-- 1 ubuntu ubuntu  1185 11月 10 15:31 4.c
-rw-r--r-- 1 ubuntu ubuntu  1929 11月 10 21:01 5.c
-rwxr-xr-x 1 ubuntu ubuntu 12832 11月 10 21:01 a.out
-rw-r--r-x 1 ubuntu ubuntu   702 11月 10 15:31 w.c
ubuntu@ubuntu:~/yuyu/yu/7$ eog 2.png
ubuntu@ubuntu:~/yuyu/yu/7$ eog 2.jpg

^C
ubuntu@ubuntu:~/yuyu/yu/7$ eog 1111.jpg
ubuntu@ubuntu:~/yuyu/yu/7$ cat 5.c
#include 
#include 
#include 
#include 
#include 
int main(int argc, const char *argv[])
{
	pid_t pid=fork();
	int flag=1;
	if(flag==1)//标识符
	{
		if(pid>0)//父进程
		{
		//	sleep(3);//可以不用刷新进程
			int fd_r=open("1111.jpg",O_RDONLY);//打开图片
			int fd_w=open("2.jpg",O_WRONLY|O_CREAT|O_TRUNC,0667);//打开第二个图片
			if(fd_r<0)//打开错误
			{
				perror("open\n");
				return -1;
			}
			if(fd_w<0)//打开错误
			{
				perror("open\n");
				return -1;
			}
			off_t size=lseek(fd_r,0,SEEK_END);//读取偏移量
			printf("%ld\n",size);//打印文件大小
			char c;
			int i;
			lseek(fd_r,0,SEEK_SET);//偏移量到开头
			lseek(fd_w,0,SEEK_SET);//偏移到开头
			for(i=0;i

代码有瑕疵,奇偶数的瑕疵

ubuntu@ubuntu:~/yuyu/yu/7$ cat 5.c
#include 
#include 
#include 
#include 
#include 
int main(int argc, const char *argv[])
{
	pid_t pid=fork();
	int flag=1;
	if(flag==1)//标识符
	{
		if(pid>0)//父进程
		{
		//	sleep(3);//可以不用刷新进程
			int fd_r=open("1111.jpg",O_RDONLY);//打开图片
			int fd_w=open("2.jpg",O_WRONLY|O_CREAT|O_TRUNC,0667);//打开第二个图片
			if(fd_r<0)//打开错误
			{
				perror("open\n");
				return -1;
			}
			if(fd_w<0)//打开错误
			{
				perror("open\n");
				return -1;
			}
			off_t size=lseek(fd_r,0,SEEK_END);//读取偏移量
			printf("%ld\n",size);//打印文件大小
			char c;
			int i;
			lseek(fd_r,0,SEEK_SET);//偏移量到开头
			lseek(fd_w,0,SEEK_SET);//偏移到开头
			for(i=0;i

 

 

你可能感兴趣的:(C基础,ubuntu,linux,服务器)