#Linux系统编程(read,open,close,write综合练习)

(一)发行版:Ubuntu16.04.7


(二)记录:

(1)不传参,指定拷贝文件,指定复制到文件

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>int main(int argc,char *argv[])
{
int copya_fd;  
int copyb_fd;
ssize_t read_byte;
ssize_t write_byte;char buff[36]={0};//打开要复制的文件
copya_fd = open("copya.c",O_RDWR);
if(copya_fd == -1)printf("fail to open copya.c\n");
elseprintf("open copya.c successfully:%d\n",copya_fd);
//打开将要复制到的文件
copyb_fd = open("copyb.c",O_RDWR|O_CREAT,0666);
if(copyb_fd == -1)printf("fail to open copyb.c\n");
elseprintf("open copyb.c successfully:%d\n",copyb_fd);
//读取文件内容到buff中
read_byte=read(copya_fd,buff,36);
write_byte=write(copyb_fd,buff,36);
printf("read %d bytes from copya.c\n",read_byte);
printf("write %d bytes to copyb.c\n",write_byte);
//关闭文件
close(copya_fd);
close(copyb_fd);return 0;
}

 makefile

copy:main.cgcc main.c -o copyclean:rm -rf copy copyb.c

 (2)参入文件夹拷贝

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>int main(int argc,char *argv[])
{
int copya_fd;  
int copyb_fd;
ssize_t read_byte;
ssize_t write_byte;char buff[36]={0};if(argc != 3)
{
printf("error number of file\n");
return 0;
}
//打开要复制的文件
copya_fd = open(argv[1],O_RDWR);
if(copya_fd == -1)printf("fail to open copyed\n");
elseprintf("open copyed successfully:%d\n",copya_fd);
//打开将要复制到的文件
copyb_fd = open(argv[2],O_RDWR|O_CREAT,0666);
if(copyb_fd == -1)printf("fail to open copy\n");
elseprintf("open copy successfully:%d\n",copyb_fd);
//读取文件内容到buff中
read_byte=read(copya_fd,buff,36);
write_byte=write(copyb_fd,buff,36);
printf("read %d bytes from copyed\n",read_byte);
printf("write %d bytes to copy\n",write_byte);
//关闭文件
close(copya_fd);
close(copyb_fd);return 0;
}

makefile

copy:main.cgcc main.c -o copychuancan:chuancan.cgcc chuancan.c -o chuancanclean:rm -rf copy copyb.c chuancan

第二种方法中,因为./exe为第一个参数,所以为argv[0],所以我们传入的参数实际为argv[1]和argv[2]。 所以我们的argv[1]为copya.c,argv[2]为copye.c

./chuancan copya.c copye.c


(三)命令:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/768803.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大厂校招,已经在「这些平台」里卷起来了!

如今的校招卷内容&#xff0c;更卷渠道。传统的渠道已然无法满足企业的野心&#xff0c;于是他们将目光投向了主流社交平台。无论是在「微信公众号」、「B站」还是「小红书」&#xff0c;我们都不难发现大厂们「开卷」的身影。那么&#xff0c;参考它们的思路&#xff0c;企业该…

设计模式面试专题

文章目录 请列举出在 JDK 中几个常用的设计模式&#xff1f;什么是设计模式&#xff1f;Java 中什么叫单例设计模式&#xff1f;请用 Java 写出线程安全的单例模式在 Java 中&#xff0c;什么叫观察者设计模式&#xff08;observer design pattern&#xff09;&#xff1f;使用…

富格林:可信要领戒备虚假套路

富格林指出&#xff0c;为避免遭遇虚假套路而造成巨大亏损&#xff0c;投资者需灵活地采用一些可信的交易技巧作为抵抗风险的重要手段。投资者进入市场后&#xff0c;需要的系统学习正规做单技巧&#xff0c;树立正规做单的意识规避虚假套路&#xff0c;提高做单盈利。接下来总…

位运算符与位移运算符

按位与& 两个二进制数字都是1 取1否则取0 按位或I 两个二进制数字都是0取0否则取1 按位取反~如果该位为0则1 &#xff0c;为1取0 按位异或 ^ 相同为零相反为1 移位运算符 有三个: <<, >> ,>>>&#xff0c;都是二元运算符&#xff0c;且都是按…

iPhone 15 Pro LiDAR Module模组逆向(2024.3.23)

iPhone15 Pro出来后,基本上国内所有的模组厂包括舜宇,丘钛等都已经逆向了LiDAR模组,并同时测试了电学,光学,BOM成本等一系列测试。当然市面上最具备影响力的是YOLE的商业评估报告,我这边同时具有这些报告,也有一些自己的见解,当然本篇讲解可能会同时涉及到几个模组厂和…

Python爬虫-批量爬取星巴克全国门店

前言 本文是该专栏的第22篇,后面会持续分享python爬虫干货知识,记得关注。 本文笔者以星巴克为例,通过Python实现批量爬取目标城市的门店数据以及全国的门店数据。 具体的详细思路以及代码实现逻辑,跟着笔者直接往下看正文详细内容。(附带完整代码) 正文 地址:aHR0cHM…

【前端寻宝之路】JavaScript初学之旅

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-azUa9yH16cRXQUxE {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

解读EPO电梯行业数智化平台功能模块,开启电梯行业智能之旅

在当今的电梯行业中&#xff0c;数字化和智能化已经成为提升运营效率和服务质量的关键。EPO电梯行业数智化运营平台凭借其出色的功能模块&#xff0c;为行业带来了创新和变革。那么我们今天就来讲讲国辰智企的EPO电梯行业数智化运营平台的功能吧。 1、EOS土建出图&#xff1a;这…

【STK】手把手教你利用STK进行导弹和反导仿真02 - STK/MMT模块01 导弹任务分析工具概述

导弹任务分析工具 Missile Mission Toolbox MMT包括4个部分,分别是 导弹设计工具 Missile Design Tool MDT 导弹飞行工具 Missile Flight Tool MFT 拦截飞行工具 Interceptor Flight Tool MCT 导弹转换工具 Missile Conversion Tool MCT 可以用于 创建高保真弹道 评估导弹系统…

贝尔曼最优方程【BOE】

强化学习笔记 主要基于b站西湖大学赵世钰老师的【强化学习的数学原理】课程&#xff0c;个人觉得赵老师的课件深入浅出&#xff0c;很适合入门. 第一章 强化学习基本概念 第二章 贝尔曼方程 第三章 贝尔曼最优方程 文章目录 强化学习笔记一、最优策略二、贝尔曼最优方程(BOE)三…

【linux】进程1 -- 属性

文章目录 进程PCBlinux查看进程 进程属性task_struct结构体一、进程标识符父子进程 二、进程状态磁盘睡眠 -- D 暂停和跟踪暂停 -- T和t僵尸进程 -- Z孤儿进程 三、进程优先级 进程 课本概念&#xff1a;程序的一个执行实例&#xff0c;正在执行的程序&#xff0c;操作系统进行…

反序列化漏洞简单知识

目录&#xff1a; 一、概念&#xff1a; 二、反序列化漏洞原因 三、序列化漏洞的魔术方法&#xff1a; 四、反序列化漏洞防御&#xff1a; 一、概念&#xff1a; 序列化&#xff1a; Web服务器将HttpSession对象保存到文件系统或数据库中&#xff0c;需要采用序列化的…

nodejs+vue反诈科普平台的设计与实现pythonflask-django-php

相比于以前的传统手工管理方式&#xff0c;智能化的管理方式可以大幅降低反诈科普平台的运营人员成本&#xff0c;实现了反诈科普平台的标准化、制度化、程序化的管理&#xff0c;有效地防止了反诈科普平台的随意管理&#xff0c;提高了信息的处理速度和精确度&#xff0c;能够…

AIGC、3D模型、轻量化、格式转换、可视化、数字孪生引擎...

老子云3D可视化快速开发平台&#xff0c;集云压缩、云烘焙、云存储云展示于一体&#xff0c;使3D模型资源自动输出至移动端PC端、Web端&#xff0c;能在多设备、全平台进行展示和交互&#xff0c;是全球领先、自主可控的自动化3D云引擎。 平台架构 平台特性 基于 HTML5 和 Web…

IP 报头和以太网报头

IP 报头和以太网报头是计算机网络中两个重要的报头&#xff0c;它们分别用于网络层和数据链路层。虽然它们都包含用于路由和寻址信息&#xff0c;但它们在功能和结构上存在着一些关键差异。 IP 报头 IP 报头是网络层协议&#xff0c;它负责在网络上路由数据包。它包含以下信息…

微信小程序实现多张照片上传

hello hello~ &#xff0c;这里是 code袁~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff1a;code袁 &#x1f4a5; 所属专栏&…

springboot+vue导出excel并下载

引入easyexcel依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.2</version></dependency>编写接口 /*** 批量导出** param ids* return*/PostMapping("/export"…

​如何下载virtualbox的旧版本​

1. 打开VirtualBox官网&#xff1a;https://www.virtualbox.org/wiki/Download_Old_Builds 2. 在页面上找到“VirtualBox 5.2.x”或者“VirtualBox 6.0.x”等旧版本的链接&#xff0c;点击进入。 3. 在页面上找到对应操作系统的下载链接&#xff0c;点击下载。 4. 下载完成后…

Linux 进程通信:命名管道、共享内存

目录 一、命名管道 1、概念 2、特点 3、原理 4、创建 5、匿名管道与命名管道的区别 6、命名管道的打开规则 二、命名管道—实现客户端和服务器之间的通信 1、Makefile 2、comm.hpp 3、Log.hpp 4、server.cxx 5、client.cxx 运行测试&#xff1a; 三、system V…

java泛型详解

java泛型详解 目录 一、泛型类 二、泛型方法 三、类型变量限定 四、类型擦除 4.1与4.2&#xff1a;虚拟机中没有泛型 4.3&#xff1a;翻译泛型表达式 五、继承规则&#xff08;通配符的上下限&#xff09; 捕获通配符。 六、约束与局限性 大部分的泛型文章只涉及到泛…