linux高级编程(文件操作)

合集下载

Linux对文件新建修改删除有哪些命令

Linux对文件新建修改删除有哪些命令

Linux对文件新建修改删除有哪些命令Linux系统中对文件操作最基础操作之一,包括新建,修改,删除文件等,那么怎么用命令实现呢,下面由店铺为大家整理了linux的文件操作命令的相关知识,希望对大家有帮助!linux的文件操作命令linux文件操作命令一、新建文件1.新建文件夹命令:mkdir 文件夹名称2.创建文档就用:vi 文件名,然后就可以编辑文档了,退出的时候依次按ESC -> : ->x 就退出并保存了,:wq 保存后退出。

:x 同“ wq”。

:q! –不保存内容,强制退出。

linux文件操作命令二、修改文件1.vi命令。

vi 文件名这样就可以打开一个文件,再点击i就可以进入编辑了。

其实编辑命令还有:o,a。

我这里比较熟悉i的使用:退出点击esc键,就进入命令模式。

我这里找了一些常见的命令,如下:x:删除当前字符。

dd:删除当前行。

2dd:删除文件的当前行和后一行。

u:恢复前一步操作。

p:复制之前删除的行。

yy:复制光标所在的整行。

2yy:复制2行,举一反三 3yy。

p:粘贴到光标的后面。

linux文件操作命令三、查看文件1.查看目录下的所有文件又2种命令:ll 和ls 。

ll会列出该文件下的所有文件信息,包括隐藏的文件,而ls 只列出显式文件名。

2.查看某个文件内容也有2种:cat 和 vi 。

cat主要有三大功能:一次显示整个文件:$ cat filenam 、从键盘创建一个文件:$ cat > filename 只能创建新文件,不能编辑已有文件、将几个文件合并为一个文件: $cat file1 file2 > file .vi实际上是文件编辑命令,但是也可以查看文件。

linux文件操作命令四、删除文件1.删除文件夹:rm [选项] 文件夹名称。

如rm -r test2.删除文件:rm 文件名。

如:rm test.txt补充:Linux基础实用命令1、cd命令这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。

linux文件操作实验总结

linux文件操作实验总结

linux文件操作实验总结在进行Linux文件操作的实验过程中,我们学习了许多有关文件的基本操作和常用命令,下面将对这些实验内容进行总结和归纳。

一、文件操作基础1. 新建文件:使用touch命令可以创建一个新的空文件。

例如,使用命令"touch test.txt"来创建一个名为test.txt的空文件。

2. 文件重命名:使用mv命令可以将文件进行重命名。

例如,使用命令"mv oldname.txt newname.txt"将旧文件名oldname.txt修改为newname.txt。

3. 文件删除:使用rm命令可以删除指定的文件。

例如,使用命令"rm test.txt"可以删除名为test.txt的文件。

4. 文件复制:使用cp命令可以将文件复制到指定的位置。

例如,使用命令"cp test.txt /home/user"可以将test.txt文件复制到/home/user目录下。

二、文件权限管理1. 权限说明:Linux系统中的文件具有读、写和执行权限,分别对应数字4、2和1。

可以使用chmod命令来更改文件的权限。

2. 修改权限:使用chmod命令加上对应的数字值可以修改文件的权限。

例如,使用命令"chmod 777 test.txt"将test.txt文件的权限设置为最高权限。

3. 查看权限:使用ls命令的-l参数可以列出文件的详细信息,包括权限信息。

例如,使用命令"ls -l test.txt"可以查看test.txt文件的权限情况。

三、文件查找与查看1. 文件查找:使用find命令可以在指定路径下查找符合条件的文件。

例如,使用命令"find /home/user -name test.txt"可以查找/home/user目录下名为test.txt的文件。

linux命令操作手册

linux命令操作手册

linux命令操作手册一、文件操作1.1 创建文件:使用touch命令可以创建一个空文件,语法为“touch 文件名”。

1.2 编辑文件:使用文本编辑器(如vi、nano等)可以编辑文件,语法为“编辑器文件名”。

1.3 复制文件:使用cp命令可以复制文件,语法为“cp 源文件目标文件”。

1.4 移动文件:使用mv命令可以移动文件,语法为“mv 源文件目标目录”。

1.5 删除文件:使用rm命令可以删除文件,语法为“rm 文件名”。

二、目录操作2.1 创建目录:使用mkdir命令可以创建目录,语法为“mkdir 目录名”。

2.2 删除目录:使用rmdir命令可以删除目录,语法为“rmdir 目录名”。

2.3 移动目录:使用mv命令可以移动目录,语法为“mv 目录名目标目录”。

2.4 复制目录:使用cp命令可以复制目录,语法为“cp -r 源目录目标目录”。

三、文本操作3.1 查看文件内容:使用cat命令可以查看文件内容,语法为“cat 文件名”。

3.2 编辑文件内容:使用文本编辑器(如vi、nano等)可以编辑文件内容。

3.3 查找文本:使用grep命令可以查找文本,语法为“grep '查找内容' 文件名”。

3.4 替换文本:使用sed命令可以替换文本,语法为“sed 's/查找内容/替换内容/g' 文件名”。

四、压缩与解压4.1 压缩文件:使用tar命令可以压缩文件,语法为“tar -czvf 压缩文件名.tar.gz 源文件或目录名”。

4.2 解压文件:使用tar命令可以解压文件,语法为“tar -xzf 压缩文件名.tar.gz”。

五、文件查找5.1 查找文件:使用find命令可以查找文件,语法为“find 查找路径-name '文件名'”。

5.2 查找目录:使用find命令可以查找目录,语法为“find 查找路径-type d -name '目录名'”。

归纳整理Linux下C语言常用的库函数----文件操作

归纳整理Linux下C语言常用的库函数----文件操作

归纳整理Linux下C语⾔常⽤的库函数----⽂件操作在没有IDE的时候,记住⼀些常⽤的库函数的函数名、参数、基本⽤法及注意事项是很有必要的。

参照Linux_C_HS.chm的⽬录,我⼤致将常⽤的函数分为⼀下⼏类:1. 内存及字符串控制及操作2. 字符串转换3. 字符测试4. ⽂件操作5. 时间⽇期6. 常⽤数学函数7. ⽂件内容操作8. ⽂件权限控制9. 进程操作10. 线程操作11. Socket操作12. 信号处理13. 数据结构及算法这次主要总结的是上⾯⿊⾊部分,关于⽂件操作的函数。

系统调⽤归类** 函数名⽤法备注**1. int open(const char *pathname, int flags); open and possibly create a file or device flags 必须包含O_RDONLY, O_WRONLY, or O_RDWR中的任何⼀个**2. int open(const char *pathname, int flags, mode_t mode); UP mode只是在flags中包含O_CREAT时才有效**3. int fsync(int fd); synchronize a file's in-core state with storage device 写完数据close前必须先同步,以防意外**4. off_t lseek(int fd, off_t offset, int whence); 定位⽂件位置第三个参数可以为SEEK_SET SEEK_CUR SEEK_END**5. ssize_t read(int fildes, void *buf, size_t nbyte); UP ⽂件位置会随读取的字节数移动**6. ssize_t write(int fildes, const void *buf, size_t nbyte); UP UP**7. int close(int fd); UP UP**8. void *mmap(void *addr, size_t length, int prot, int flags, 内存映射先⽤fstat得到⽂件⼤⼩,然后使⽤该函数将⽂件内容映射到内存中,然后就可以int fd, off_t offset); 直接调⽤字符串函数操作。

linux编辑文本的命令

linux编辑文本的命令

linux编辑文本的命令Linux是一种开源的操作系统,广泛应用于服务器和个人电脑中。

它提供了许多强大的命令行工具,方便用户对文本进行编辑和处理。

本文将介绍一些常用的Linux命令,帮助读者更好地编辑文本。

1. cat命令:cat命令用于查看文本文件的内容。

例如,使用cat命令查看一个名为text.txt的文本文件的内容,可以输入以下命令:```cat text.txt```2. echo命令:echo命令用于将指定的字符串输出到终端或文件中。

例如,使用echo命令将字符串"Hello, Linux!"输出到终端,可以输入以下命令:```echo "Hello, Linux!"```3. touch命令:touch命令用于创建新的空白文件或更改文件的访问和修改时间。

例如,使用touch命令创建一个名为file.txt的空白文件,可以输入以下命令:```touch file.txt```4. cp命令:cp命令用于复制文件或目录。

例如,使用cp命令将一个名为source.txt的文件复制到目录target中,可以输入以下命令:```cp source.txt target/```5. mv命令:mv命令用于移动文件或目录,也可以用于重命名文件或目录。

例如,使用mv命令将一个名为old.txt的文件重命名为new.txt,可以输入以下命令:```mv old.txt new.txt```6. rm命令:rm命令用于删除文件或目录。

例如,使用rm命令删除一个名为file.txt的文件,可以输入以下命令:```rm file.txt```7. grep命令:grep命令用于在文本文件中搜索指定的模式。

例如,使用grep命令在一个名为text.txt的文件中搜索字符串"Linux",可以输入以下命令:```grep "Linux" text.txt```8. sed命令:sed命令用于对文本进行流式编辑。

Linux命令行技巧如何创建和编辑文本文件

Linux命令行技巧如何创建和编辑文本文件

Linux命令行技巧如何创建和编辑文本文件在Linux操作系统中,命令行是一种在终端窗口通过键盘输入命令来与计算机进行交互的方式。

在日常使用中,我们经常需要创建和编辑文本文件。

本文将介绍一些Linux命令行的技巧,帮助您更高效地创建和编辑文本文件。

1. 创建文本文件在Linux命令行中,可以使用touch命令来创建空白文本文件。

请按照以下步骤操作:步骤一:打开终端窗口。

步骤二:切换到要创建文件的目录。

例如,要在家目录下创建一个名为mytext.txt的文件,可以使用以下命令:cd ~步骤三:输入以下命令来创建文本文件:touch mytext.txt通过以上步骤,您就成功地创建了一个名为mytext.txt的空白文本文件。

2. 编辑文本文件Linux命令行提供了多个文本编辑器,常用的有vi和nano。

下面将介绍这两个编辑器的基本用法。

2.1 使用vi编辑器vi是Linux下功能强大的文本编辑器,具有丰富的编辑功能。

请按照以下步骤操作:步骤一:打开终端窗口。

步骤二:切换到要编辑文件的目录。

步骤三:输入以下命令来打开文本文件:vi mytext.txt步骤四:进入编辑模式,按下i键。

此时,您可以开始编辑文件内容。

步骤五:编辑完成后,按下ESC键退出编辑模式。

然后输入以下命令保存并退出::wq通过以上步骤,您就成功地使用vi编辑器创建并编辑了文本文件。

2.2 使用nano编辑器nano是一个易于使用的文本编辑器,简单直观。

请按照以下步骤操作:步骤一:打开终端窗口。

步骤二:切换到要编辑文件的目录。

步骤三:输入以下命令来打开文本文件:nano mytext.txt步骤四:开始编辑文件内容。

步骤五:编辑完成后,按下Ctrl + X组合键,然后按下Y键确认保存修改。

通过以上步骤,您就成功地使用nano编辑器创建并编辑了文本文件。

总结:Linux命令行提供了多种创建和编辑文本文件的技巧。

通过使用touch命令创建文件,并结合vi或nano编辑器,您可以轻松地在命令行下创建和编辑文本文件。

Linux(CC++)下的文件操作open、fopen与freopen

Linux(CC++)下的文件操作open、fopen与freopen

Linux(CC++)下的⽂件操作open、fopen与freopenopen是下的底层系统调⽤函数,fopen与freopen c/c++下的标准I/O库函数,带输⼊/输出缓冲。

linxu下的fopen是open的封装函数,fopen最终还是要调⽤底层的系统调⽤open。

所以在linux下如果需要对设备进⾏明确的控制,那最好使⽤底层系统调⽤(open),open对应的⽂件操作有:close, read, write,ioctl 等。

fopen 对应的⽂件操作有:fclose, fread, fwrite, freopen, fseek, ftell, rewind等。

freopen⽤于重定向输⼊输出流的函数,该函数可以在不改变代码原貌的情况下改变输⼊输出环境,但使⽤时应当保证流是可靠的。

详细见第3部分。

-------------------------------------------------------------------------------------------------------------------open和fopen的区别:1,fread是带缓冲的,read不带缓冲.2,fopen是标准c⾥定义的,open是POSIX中定义的.3,fread可以读⼀个结构.read在linux/unix中读⼆进制与普通⽂件没有区别.4,fopen不能指定要创建⽂件的权限.open可以指定权限.5,fopen返回⽂件指针,open返回⽂件描述符(整数).6,linux/unix中任何设备都是⽂件,都可以⽤open,read.-------------------------------------------------------------------------------------------------------------------1、open系统调⽤(linux)需要包含头⽂件:#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>函数原型:int open( const char * pathname, int oflags);int open( const char * pathname,int oflags, mode_t mode);mode仅当创建新⽂件时才使⽤,⽤于指定⽂件的访问权限。

linux修改文件内容

linux修改文件内容

linux修改文件内容Linux修改文件内容。

在Linux系统中,修改文件内容是我们经常需要进行的操作之一。

无论是修改配置文件、编辑文本文件还是更新日志文件,都需要我们掌握一定的技巧和方法。

本文将介绍几种常见的方法,帮助大家更好地理解和掌握在Linux系统中修改文件内容的技巧。

1. 使用文本编辑器。

最常见的修改文件内容的方法就是使用文本编辑器,Linux系统中有很多种文本编辑器,比如vi、vim、nano等。

其中,vi是最常用的一种文本编辑器,也是Linux系统自带的编辑器之一。

使用vi编辑器修改文件内容的步骤如下:首先,使用vi命令打开需要编辑的文件,比如我们要编辑一个名为test.txt的文件,可以使用以下命令:vi test.txt。

然后,在vi编辑器中按下“i”键进入插入模式,此时可以对文件内容进行编辑。

编辑完成后,按下“Esc”键退出插入模式,然后输入“:wq”保存并退出文件。

2. 使用重定向符号“>”和“>>”。

除了使用文本编辑器,我们还可以使用重定向符号“>”和“>>”来修改文件内容。

其中,“>”用于覆盖文件内容,而“>>”用于追加文件内容。

具体使用方法如下:使用“>”覆盖文件内容的命令如下:echo "new content" > test.txt。

使用“>>”追加文件内容的命令如下:echo "new content" >> test.txt。

3. 使用sed命令。

sed是一个流式文本编辑器,可以用来对文件内容进行修改和替换。

使用sed命令修改文件内容的方法如下:将文件中的某个字符串替换为新的内容的命令如下:sed -i 's/old_content/new_content/g' test.txt。

其中,“-i”表示直接修改文件内容,而“s/old_content/new_content/g”表示将文件中所有的old_content替换为new_content。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文件及设备操作1.基本概念linux下文件操作的两种方法:原始文件I/O、标准I/O库标准I/O库: 是C语言的标准输入输出库,是针对流对象FILE 进行的操作,是带缓存的。

原始I/O库:是linux系统提供的文件API,是针对描述描进行的操作,是无缓存机制。

文件描述符:创建一个新文件或打开现有文件时,内核向进程返回的一个非负整数。

其范围在0~OPENMAX之间,OPENMAX是一个宏,不同linux版本取值不同.系统调用:是操作系统提供的某些功能的接口(函数)常用设备/dev/null 空设备,丢弃数据用/dev/port 存取I/O端口/dev/ttyN N(0 1 ...) 字符终端/dev/sdaN N(0 1...) SCSI磁盘/dev/scdN N(0 1...) SCSI光驱/dev/mouseN N(0 1...) 鼠标/dev/socksys 套接字访问端口接口,用于网络传输/dev/route 路由器控制设备/dev/fbN N(0 1...) 帧缓冲设备(frame buffer) 重点/dev/mixer 混音器音量控制、混音控制重点/dev/dsp 声卡数字采样和数字录音设备用于播放声音和录音经常使用重点(oss)/dev/audio 声卡音频设备用于播放声音和录音,支持sun音频较少使用/dev/video 视频摄像头用于视频采样(录像)常用头文件#include <sys/types.h> 对外提供的各种数据类型如size_t#include <sys/stat.h> 对外提供的各种结构类型如time_t#include <errno.h> 对外提供的各种错误号的定义用数字代码的错误类型#include <fcntl.h> 文件控制的函数定义#include <termios.h> 串口的结构及定义#include <sys/soundcard.h> 声卡的结构及定义#include <sys/ioctl.h> 设备控制函数#include <unistd.h> 在C++内加入的头2.设备的操作函数#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <sys/ioctl.h>#include <unistd.h>1)Access功能: 确定文件的访问权限用法: int access(const char *filename, int amode);finename 文件名称mode 模式,共5种模式:0-检查文件是否存在1-检查文件是否可运行2-检查文件是否可写访问4-检查文件是否可读访问6-检查文件是否可读/写访问例:判断文件是否存在int file_exists(char *filename){return (access(filename, 0) == 0);}2)创建文件int creat(char *pathname,mode_t mode);pathname:要创建文件的路径文件名。

可以使用绝对路径或相对路径。

mode: 新建文件的访问权限,同创建目录使用时,可用或运算组合使用,如S_IRUSR | SIWUSR写可以使用数字,如666返回值:成功,返回文件描述符,失败-1说明:3)打开文件int open(const char *pathname, int oflag,mode_t mode);pathname: 设备或文件名flags: 文件的打开方式,可以用位运算|组合O_RDONL Y 只读O_WRONL Y 只写O_RDWR 读写模式O_APPEND 追加模式O_CREAT 创建文件O_SYNC 同步。

O_NONBLOCK 非阻塞模式,默认为阻塞模式O_EXCL 如果定义了O_CREAT,且文件已存在,则出错O_TRUNC 如果文件存在,且以只读或指写方式打开,则截断文件mode: 可选参数,用于定义新建文件的访问权限,同creat函数返回值:成功文件描述符失败-1注:O_RDONL Y、O_WRONL Y、O_RDWR中只能选择一个,然后通过|运算和其它选项组合O_EXCL与O_CREAT组合实现互斥,文件已存在的情况下,调用失败。

O_WRONL Y|O_CREAT|O_TRUNC组合,则与creat函数等价对于设备文件,不能使用O_CREAT选项例:int fd=open("./test.txt",O_CREAT | O_RDWR | O_SYNC);//文件int fd=open("/dev/dsp",O_RDWR | O_SYNC); //设备4)文件读写ssize_t write(int filedes,void *buff, size_t nbytes);ssize_t read(int filedes,void *buff, size_t nbytes);filedes: 文件描述符buff:内存地址,如果用write,则先在buff内填写数据如果用read,则先准备好一个内存,等待填写nbytes:要读写的字节数返回值:成功是实际的读写长度失败-1注:read、write不仅用于读取文件,而且用于套接字、设备等。

5)文件的关闭int close(int filedes);6)文件的删除int unlink(const char * path)说明:只是将文件的引用计数减一,只有在引用计数变为0的情况下,才会删除物理文件7)移动文件指针off_t lseek(int fd,off_t offset,int whence);fd:文件描述符offset: 文件偏移量,是相对于whence的偏移whence: 文件偏移的起始位置SEEK_SET 文件头SEEK_CUR 当前位置SEEK_END 文件尾开始返回值:成功,返回新的当前文件指针位置,失败-18)设备控制(设置)#include <sys/ioctl.h>int ioctl(int d, int request, ...);d: 文件枸柄(描述符)request:用户程序对设备的控制命令,后面的省略号,是补充参数,一般最多一个返回值:成功0 失败-1例:int fd=open("/dev/dsp",O_RDWR); //打开设备int format=8; //音频采样大小int err=ioctl(fd,SNDCTL_DSP_SETFMT,&format);//SNDCTL_DSP_SETFMT // 是在soundcard.h头文件定义的宏,代表设置音频位数//&format//音频位数变量的地址int speed=44100int err=ioctl(fd,SNDCTL_DSP_SPEED,&speed);//SNDCTL_DSP_SPEED // 代表设置音频频率//&speed//频率的值ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。

所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。

Linux Kernel中提供了一些宏,这些宏标明这个命令对应的设备类型、设备序列号、数据传送方向和数据传输尺寸。

不同的设备都有一组相应宏,需要根据不同设备的说明进行使用3.函数应用文件操作的流程open -> [ioctl] -> write(read)->close其中ioctl用于设置设备,可根据情况使用1)标准输入、标准输出、标准错误输出在linux进程启动时,内核默认为每个进程打开3个文件:标准输入文件、标准输出文件、标准错误输出文件。

这三个文件也分配了文件描述符,分别为0、1、2标准输入文件被映射至键盘标准输出文件和标准错误输出文件被映射至监视器对这三个文件的描述符可以使用直接数字,也可以使用它们的宏定义:STDIN_FILENO、STDOUT_FILENO、STDDERR_FILENO例:用标准输入输出进行读写(即scanf和printf)#include <stdio.h>int main(){char buf[256];int size=read(0,buf,256); //0是标准输入描述符printf("-------------%d\n",size);write(1,buf,size); //1是标准输出描述符}2)对普通文件的操作#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/ioctl.h>#include <fcntl.h>//#include <unistd.h> 在C++内加入的头例1:创建文件,并写入数据int main(int argc,char **argv){int fd=open("./test.txt",O_CREAT | O_RDWR);if (fd==-1) {printf("open err\n");return 0;}char buf[256]="aaaaaaaaaaaaaaaaaaaaaa";ssize_t size=write(fd,buf,strlen(buf));printf("size=%d,len=%d\n",size,strlen(buf));close(fd);return 0;}例2:将一个文件内的数据写入到另一个文件int main(int argc,char **argv){int desfd=open("./new.txt",O_CREAT | O_WRONL Y);if (desfd==-1) {printf("open err\n");return 0;}int srcfd=open("./test.txt",O_RDONL Y);if (srcfd==-1) {printf("open err\n");return 0;}int filelen=lseek(srcfd,0,SEEK_END);lseek(srcfd,0,SEEK_SET);char buf[256];int len,size=0;while(size<filelen){len=read(srcfd,buf,1);len=write(desfd,buf,len);size+=len;}close(srcfd);close(desfd);return 0;}3).音频设备操作声卡支持的所有采样格式可以在头文件soundcard.h中找到设置采样时的声道数目SNDCTL_DSP_STEREO 0代表1声道1代表2声道设置采样时的频率SNDCTL_DSP_SPEED 8000 11025 12000 22050 37800 44100 设置采样大小SNDCTL_DSP_SETFMT 8 16#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/ioctl.h>#include <fcntl.h>#include <linux/soundcard.h>#include <unistd.h>static int isstop=1;static int ispause=0;void setvol(int lvol,int rvol){int fd=open("/dev/mixer",O_RDWR);short vol=(lvol<<8 | rvol); //音量,用16位整数记录左右声道音量//ioctl(fd,MIXER_READ(SOUND_MIXER_VOLUME),&vol);//读音量ioctl(fd,MIXER_WRITE(SOUND_MIXER_VOLUME),&vol);//设音量close(fd);//lvol 1 0000001// 0000000100000000//rvol 2 0000010// 0000000100000010}void getvol(int lvol,int *rvol){int fd=open("/dev/mixer",O_RDWR);short vol=(lvol<<8 | rvol); //音量,用16位整数记录左右声道音量ioctl(fd,MIXER_READ(SOUND_MIXER_VOLUME),&vol);//读音量//ioctl(fd,MIXER_WRITE(SOUND_MIXER_VOLUME),&vol);//设音量close(fd);//lvol 1 0000001// 0000000100000000//rvol 2 0000010// 0000000100000010void plays(int b,int c,int s,char *file){int i,bits=b;int channels=c;int speed=s;char filename[256];strcpy(filename,file);//////////////////////////////////////////////////////////int dsp_fd=open("/dev/dsp",O_RDWR);if (dsp_fd==-1) return ;ioctl(dsp_fd,SNDCTL_DSP_STEREO,&channels);ioctl(dsp_fd,SNDCTL_DSP_SETFMT,&bits);ioctl(dsp_fd,SNDCTL_DSP_SPEED,&speed);int fd=open(filename,O_RDONL Y);int size=lseek(fd,0,2);lseek(fd,0,0);char buf[256];for(i=0;i<size;){if(isstop) break;while (ispause) usleep(50000);printf("%d ",i);int len=read(fd,buf,256);write(dsp_fd,buf,256);i+=len;}close(fd);close(dsp_fd);}int main(int argc,char **argv){int i,bits=8; //采样大小int channels=1; //0单声道,1双声道int speed=44100; //8k 11.025k 12k 22.05k 37.8k 44.1k char filename[256];strcpy(filename,"./audio1.wav");for(i=0;i<argc;i++){ //-b -c -s -fif (strcmp(argv[i],"-b")==0)bits=atoi(argv[i+1]);else if (strcmp(argv[i],"-c")==0)channels=atoi(argv[i+1]);else if (strcmp(argv[i],"-s")==0)speed=atoi(argv[i+1]);else if (strcmp(argv[i],"-f")==0)strcpy(filename,argv[i+1]);}plays(bits,channels,speed,filename);return 0;}S=R(采样频率Hz )×D(录音时间)×r(量化位数(位)) ×声道数/8 s: 字节;R:HZ;D:录音时间S;r:量化位数bit。

相关文档
最新文档