open函数

linux之间进程通信

扶醉桌前 提交于 2020-02-02 00:17:47
进程间通信方式: 同主机进程间数据交换机制: pipe(无名管道) / fifo(有名管道)/ message queue(消息队列)和共享内存。 必备基础: fork() 创建一个与之前完全一样的进程,这两个进程执行没有固定的先后顺序,哪个进程先执行要看系统的进程调度策略。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都 复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。    vfork : 与fork用法相同,但是他和父进程共享同样的数据存储,因此无需完全复制父进程的地址空间。 // fork() study example 1#include <unistd.h> #include <stdio.h> int main () { pid_t fpid; //fpid表示fork函数返回的值 int count=0; // fork 会将这个变量存在两个不同的内存中,所以两次count的值都是 1 ,而不是 1,2 。 fpid=fork(); if (fpid < 0) printf("error in fork!"); else if (fpid == 0) { printf("i am the child process, my process id is %d、n",getpid(

python基础之文件基本操作

ε祈祈猫儿з 提交于 2020-01-30 21:09:27
代码的存储可以通过定义变量来存储,但是变量存储代码,这只能存在内存中,一旦关闭,原先的代码就会消失,所以我们需要把代码通过文件的形式,永久将代码保存在硬盘中,所以需要学会文件的基本操作。 文件的只读和只写模式分别为r和w 1. 先建立一个文件demo1.txt , 并写入内容 查看demo1文件中的内容 # 我们在桌面上操作文件:1.打开文件;2.读取文件; 3.关闭文件 f = open("demo1.txt", "r", encoding="utf-8")# f = open(r"C:\Users\dyl\Desktop\demo3.txt", "r", encoding='utf-8') r代表转义,后面的r代表read模式 print(f.read()) f.close() """ 1. 打开文件操作 demo1.txt 文件的路径 文件的路径可以是绝对路径,也可以是相对路径,绝对路径比较死,如果文件的路径发生了改变,那么打开文件的路径就要相对地改,所以我们尽量用相对路径如果是绝对路径,需要用r""转义符 "r" 是只读模式 encoding 是指定文件的编码方式 如果桌面文件的编码方式与指定的编码方式不一样,那么就会报错 (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3:

关于file_operations结构体

时光总嘲笑我的痴心妄想 提交于 2020-01-30 11:08:58
结构体 file_operations 在头文件 linux/fs.h 中定义,用来存储驱动内核模块提供的对设备进行各种操作的函数的指针。该结构体的每个域都对应着驱动内核模块用来处理某个被请求的 事务的函数的地址。 举个例子,每个字符设备需要定义一个用来读取设备数据的函数。结构体 file_operations 中存储着内核模块中执行这项操作的函数的地址。一下是该结构体 在内核 2.6.5 中看起来的样子: struct file_operations { struct module *owner; loff_t(*llseek) (struct file *, loff_t, int); ssize_t(*read) (struct file *, char __user *, size_t, loff_t *); ssize_t(*aio_read) (struct kiocb *, char __user *, size_t, loff_t); ssize_t(*write) (struct file *, const char __user *, size_t, loff_t *); ssize_t(*aio_write) (struct kiocb *, const char __user *, size_t, loff_t); int (*readdir)

字符设备驱动程序

。_饼干妹妹 提交于 2020-01-28 03:42:22
在这里首先需要说明,这一系列的文章可能跨度比较大,比如按照正常的逻辑,写完怎样搭建开发环境之后,就该接着讲一个helloworld的内核模块,然 后才是这一篇字符驱动的文章,但是我不想重复的去写那么多东西,至于有这方面需求的博友,可以随便google一下就能查到很多类似的文章,因为我是希望 linux的博客和Mac专题的一起同时对比着写,所以理论上的东西不会太多,主要还是讲解每一个能真正运行起来的小实例,用这种方式来阐述内核开发的方 方面面。而且需要重点说明的是,这一个阶段涉及的比较多的内容是关于网络方面的扩展,也就是主要介绍的内容是Netfilter,因为在Mac上我也主要 是介绍Net Kernel Extensions。当然为了阐述NetFilter,也必须介绍一些基本的知识,例如内存管理,同步机制,中断等等。本文主要介绍的是如何实现一个简 单的字符驱动程序,来达到内核和用户空间之间的内存数据交换。 一、设备分类 在Linux系统中设备分为三种类型:字符驱动、块设备驱动和网络接口设备。字符设备是指那些只能一个字符一个字符按照先后顺序进行读写的设备。而块设备是指那些可以从设备的任意位置读取指定长度数据的设备,不必按照先后顺序进行读取。 常见的字符设备有鼠标、键盘、串口等,常见的块设备有硬盘、U盘、SD卡、光盘等。在Linux中用ls

file 文件处理

时间秒杀一切 提交于 2020-01-26 03:17:18
python文件处理 #写文件 >>> f=open("test.log","w") #"w"写入模式 >>> f.write("test line\n") 10 >>> f.write("test line2") 11 >>> f.close() #操作完毕记得关闭文件! #读文件 >>> f=open("test.log","r") #"r"只读模式 >>> print(f.read()) test line test line2 >>> f.close() #关闭文件对象 文件句柄 f = open('文件路径', '模式',encoding='编码') 文件编码 encoding: open() 文件是由操作系统打开,如果没有手动设置编码,那么默认操作系统会用自己的编码去打开文件,在linux下是utf-8,windows下是 gbk。 打开模式: r 只读模式(默认),文件必须存在,否则会抛异常 w 写入模式,需要注意:若文件已存在,会覆盖掉原来的内容! x 写入模式,若文件已存在,会报异常 a 追加。不存在则创建,存在就追加 t 文本模式打开 (默认)。 open()函数默认的打开模式是'rt' b 以二进制读文件。对于非文本文件,使用b模式,“b”表示以字节的方式操作 + 可读写模式 文件对象的方法: f.close() 回收操作系统打开的文件 f.read(

linux 中的 open() read() write() close() 函数

早过忘川 提交于 2020-01-24 01:59:45
1. open()函数 功能描述:用于打开或创建文件,在打开或创建文件时可以指定文件的属性及用户的权限等各种参数。 所需头文件:#include <sys/types.h>,#include <sys/stat.h>,#include <fcntl.h> 函数原型: int open(const char *pathname,int flags,int perms) 参数: pathname :被打开的文件名(可包括路径名如"dev/ttyS0") flags :文件打开方式, O_RDONLY:以只读方式打开文件 O_WRONLY:以只写方式打开文件 O_RDWR:以读写方式打开文件 O_CREAT:如果改文件不存在,就创建一个新的文件,并用第三个参数为其设置权限 O_EXCL:如果使用O_CREAT时文件存在,则返回错误消息。这一参数可测试文件是否存在。此时open是原子操作,防止多个进程同时创建同一个文件 O_NOCTTY:使用本参数时,若文件为终端,那么该终端不会成为调用open()的那个进程的控制终端 O_TRUNC:若文件已经存在,那么会删除文件中的全部原有数据,并且设置文件大小为0 O_APPEND:以添加方式打开文件,在打开文件的同时,文件指针指向文件的末尾,即将写入的数据添加到文件的末尾 O_NONBLOCK: 如果pathname指的是一个FIFO

Python 文件数据读写

孤街浪徒 提交于 2020-01-23 10:37:46
文件数据读写 读写文件,本质上是请求操作系统打开一个文件对象,然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。 文件读取 使用 Python 内置 open() 函数,以 rt 的模式读取文件,如下示例: >> > f = open ( 'some.txt' , 'rt' ) 这行代码就表示打开一个文件,若是文件不存在,会抛出 IOError 的异常,并给出详细的信息提示: >> > f = open ( 'undefined.txt' , 'rt' ) Traceback ( most recent call last ) : File "<stdin>" , line 1 , in < module > FileNotFoundError : [ Errno 2 ] No such file or directory : 'undefined.txt' 当成功打开文件时,可使用 read() 函数读取文件的内容: >> > f . read ( ) 'Hello world!' 当数据读取完毕后,需要调用 close() 关闭文件。因为文件对象会占用资源,使用完毕后需要及时关闭释放资源。 >> > f . close ( ) 还有一种方法就是使用 with 语句,给被使用的文件创建一个上下文环境,这样文件对象就能够自动关闭。

2020-1-9(96)

佐手、 提交于 2020-01-23 01:00:39
#218、将如下文件中内容读取出来,然后将其码值存入另一个文件中 #文件名为file.txt,文件中内容为“gloryroad”先读取出来数据, #然后将字母的码值存入file1.txt文件中,10310811111412111411197100 with open("d:\\2019\\file.txt") as fp: content=fp.read() write_content="" for i in content: write_content+=str(ord(i)) with open("d:\\2019\\file1.txt","w") as fp: fp.write(write_content) with open("d:\\2019\\file1.txt") as fp: print(fp.read()) #219、读取文件内容,统计出现次数最多的汉字,并将该汉字和次数打印出来, with open("d:\\2019\\1.txt") as fp: content=fp.read() word_count={} for i in content: word_count[i]=content.count(i) print(word_count) for k,v in word_count.items(): if v==max(word_count.values(

Linux驱动之LED驱动编写

别说谁变了你拦得住时间么 提交于 2020-01-22 13:22:22
https://www.cnblogs.com/andyfly/p/9467702.html 从上到下,一个软件系统可以分为:应用程序、操作系统(内核)、驱动程序。结构图如下:我们需要做的就是写出open、read、write等驱动层的函数。一个LED驱动的步骤如下: 1、查看原理图,确定需要控制的IO端口 2、查看芯片手册,确定IO端口的寄存器地址 3、编写驱动代码 4、确定应用程序功能,编写测试代码。 5、编写Makefile,编译驱动代码与测试代码,在开发板上运行 1、查看原理图,确定需要控制的IO端口 打开原理图,确定需要控制的IO端口为GPF4、GPF5、GPF6。 2、查看芯片手册,确定IO端口的寄存器地址,可以看到它的基地址为0x56000050 3、编写驱动代码,编写驱动代码的步骤如下: 1)、编写出口、入口函数。   a、首先利用register_chrdev函数如果第一个参数为0的话那么会自动分配一个主设备号为Firstmajor ;第二个参数firstled_drv会是这个字符设备的名称可以利用命令cat /proc/devices看到;第三个参数是它的first_drv_fops结构体,这个结构体是字符设备中最主要的,后面再说明。   b、接着利用class_create函数创建一个firt_drv_class类。它的第一个参数指向这个模块

【Python】文件

人走茶凉 提交于 2020-01-22 00:53:03
目录 01.文件的基本操作 1.1 操作文件 1.2 操作文件的函数/方法 1.3 读取文件 2.4 打开文件的方式 02.文件的复制 2.1 小文件的复制 2.2 大文件的复制 01.文件的基本操作 1.1 操作文件 在计算机中操作文件的套路是分为三个步骤: 1)打开文件 2)读/写文件 3)关闭文件 1.2 操作文件的函数/方法 序号 函数/方法 说明 1 open 打开文件,并且返回文件操作对象 2 read 将文件读取到内存 3 write 将指定内容写入文件 4 close 关闭文件 open 只负责打开文件,并且返回文件对象 read/write/close 三个方法都需要通过文件对象来调用 1.3 读取文件 1.3.1 read方法(一次性读取) read 方法读取文件需要注意一下几点: 1) open 函数的第一个参数是要打开的文件名(文件名区分大小写) 2) read 方法一次性读取文件所有内容并返回 3) close 只负责关闭文件,如果忘记关闭文件,则会造成 资源浪费 或者 影响后续对文件的访问 # 打开文件,指定编码格式,避免无法读取中文 f = open("a.txt",encoding="utf-8") # 读取文件 content = f.read() print(content) # 关闭文件 f.close() 小提示: 开发过程中,通常会先编写