Linux C文件操作

Linux文件操作——标准c库对文件操作 指向。 阅读详情

linux下的文件操作包括两种,一种是使用C函数,一种是使用系统调用。

  • gcc 常用来实现c程序的编译
  • gcc filename.c 编译,链接(自动)后输出可执行文件a.out
  • 只是输入./a.out就可以执行filename程序
  • gcc -o filename filename.o 可以生成一个filename的可执行文件,直接执行filename就可以直接执行代码中的内容(与上一条相比,只是执行输出的名称)
  • gcc -S filename.c 可以生成一个filaname.s的汇编文件,汇编文件与底层执行时一一对应的,可以用来调试
  • gcc -O 可以用来编译优化,但是不是所有情况下都可以做编译优化。
  • 还可以使用gcc -c filename.c和gcc -o filename filename.o分步编译、链接

文件操作函数

文件操作函数包括fopen、fgetc、fputc函数等,这是标准的C函数

// 把file.in中给的内容输出给file.out
#include<stdio.h>
#include<stdlib.h>

int main(){
	int c;
	FILE *in,*out;//定义两个文件指针类型
	in=fopen("file.in","r");//以只读的方式打开file.in文件,成功后返回文件指针in
	out=fopen("file.out","w");//以只写的方式打开file.out文件,成功后返回文件out
	while((c=fgetc(in))!=EOF)//从in文件中读,把读出来的数据写到out中
		fputc(c,out);
	fclose(in);
	fclose(out);
	exit(0);
}
  • FILE * fopen(char *path,char *mode),第一个参数表示路径,第二个参数表示模式,fopen的返回值是一个文件指针,如果文件打开失败则返回一个NULL,可以使用fclose()函数关闭文件:

    • 模式包括<r,w,a>
    • r表示以只读的方式打开,文件指针指向了文件的起始位置,r表示的文件必须存在。
    • w表示以写入的方式打开,如果文件不存在则创建文件,如果文件存在则先清空文件。
    • a表示以追加模式打开,对一个文件的写入,如果文件不存在就创建文件,如果文件存在就在文件末尾追加内容。
    • 如果后面有+表示可读写;
    • 如果后面有b表示打开的是二进制文件
    • 如果后面有t表示打开的是文本文件。
  • char *fgets(char *s,int size,FILE *stream)表示从指定的文件中读下一个字符,返回一个没有符号的字符,或者EOF(end of file),需要读的文件必须是读或者读写的方式打开的,并且文件存在。

  • fputc(char c,FILE * fp)把内容写入到指定文件。

  • 可以使用diff file.in file.out比较两个文件的内容,没有输出表示两个文件一模一样。

  • fclose,最重要的是把文件从内存中写回磁盘。

为了程序的健壮性,可以把以上的文件改为以下,防止读的文件没有权限或者不存在

// 把file.in中给的内容输出给file.out
#include<stdio.h>
#include<stdlib.h>

int main(){
	int c;
	FILE *in,*out;//定义两个文件指针类型
	if((in=fopen("file.in","r"))==NULL){//以只读的方式打开file.in文件,成功后返回文件指针in
		print("file.in文件不存在!")
		return 0;
	}
	out=fopen("file.out","w");//以只写的方式打开file.out文件,成功后返回文件out
	while((c=fgetc(in))!=EOF)//从in文件中读,把读出来的数据写到out中
		fputc(c,out);
	
	exit(0);
}

文件系统调用

文件描述符以及open、read、write

#include<unistd.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdlib.h>

int main(){
	char block[1024];
	int in,out;
	int nread;
	
	if((in=open("file.in",O_RDONLY))==-1){// 3
		print("文件打开错误!");
		return 0;}
	out=open("file.out",O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR);// 4
	while((nread=read(in,block,sizeof(block)))>0)
		write(out,block,nread);

	return 0;
}
  • int open(constchar*pathname,int flags,mode_t mode);如果成功则返回一个文件描述符(integer,小的非负整数且没有被使用过),否则返回-1;对于open函数来说,第三个参数当且仅当创建新文件(使用O_RDONLY)才是用,用于指定文件的访问权限,比如权限为777;pathname表示要打开或者创建的文件的路径名;flags表示指定文件的打开模式,flags的值包括以下,打开或者创建文件时,至少要使用一个以下命令:

    • O_RDONLY:只读模式
    • O_WRONLY:只写模式
    • O_RDWR:读写模式
    • O_CREAT:文件不存在时创建文件
  • mode的值包括以下

    • S_IRUSR:允许文件的所有者阅读它
    • S_IWUSR:允许文件所有者写它
    • S_IRGRP:允许文件组读取它
    • S_IWGRP: 允许文件组编写它

linux下任何一个进程都有3个默认打开的文件描述符:0表示标准输入(键盘),1表示标准输出(显示器),2表示标准错误输出(显示器)

  • ssize_t read(int fd, void *buf, size_t count);表示读取指定字节数的数据到缓冲区buff中,同时文件的当前位置向后移动;读取成功返回读取的字节数,出错返回-1并且设置errno,如果在调用read之前已经到达文件末尾则返回0(例如,距文件末尾还有30个字节而请求读100个字节,则read返回30,下次read将返回0);

  • ssize_t write(int fd, const void *buf, size_t count); 成功返回写入的字节数,出错返回-1并设置errno写常规文件时

系统调用与标准函数c的调用的区别

使用time 文件路径,可以知道文件运行所需要的时间
使用scrace 文件路径,可以跟踪文件

  • 使用fgetc或者fputc的时候,它底层的调用还是调用了read和write,但是在读取的时候做了一个系统的优化,也就是一次性读取了多个字节的内容,表面上看起来只读取一个字符,实际上底层中读取的是多个字节的字符。

  • 注意系统调用这个读写位置和使用C标准I/O库时的读写位置有可能不同,这个读写位置是记在内核中的,而使用C标准I/O库时的读写位置是用户空间I/O缓冲区中的位置。比如用fgetc读一个字节,fgetc有可能从内核中预读1024个字节到I/O缓冲区中,再返回第一个字节,这时该文件在内核中记录的读写位置是1024,而在FILE结构体中记录的读写位置是1。

文件的读取位置

标准c函数

标准的c函数中,不可以对FILE的文件指针直接进行++,–,可以使用fseek函数来控制文件的读写指针。

  • int fseek(FILE *stream, long offset, int fromwhere);重定位流上的文件指针,函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置;返回值: 成功,返回0,否则返回其他值;第一个参数stream为文件指针;第二个参数offset为偏移量,整数表示正向偏移,负数表示负向偏移;第三个参数origin设定从文件的哪里开始偏移,可能取值为:

    • SEEK_SET: 文件开头,用0表示
    • SEEK_CUR: 当前位置,用1表示
    • SEEK_END: 文件结尾,用2表示
  • fseek(fp,100L,0);把fp指针移动到离文件开头100字节处;
    fseek(fp,100L,1);把fp指针移动到离文件当前位置100字节处;
    ffseek(fp,-100L,2);把fp指针退回到离文件结尾100字节处。

系统调用

系统调用使用lseek来调用文件的文件位置,与c函数调用相比,c文件调用使用的是文件指针,而系统调用使用的是文件描述符号

  • off_t lseek(int fd, off_t offset, int whence);fd表示函数描述符,参数含义与上面的c函数调用一致。

空洞文件

可以使用以上的fseek和lseek去创建一个空洞文件
① 空洞文件就是这个文件有一段是空的;
② 普通文件中间不能有空,write文件时从前往后移动文件指针,依次写入;
③ 用lseek往后跳过一段,就形成空洞文件;
④ 空洞文件对多线程共同操作文件非常有用。需要创建一个很大文件时,从头开始依次创建时间很长,可以将文件分成多段,多个线程操作每个线程负责其中一段的写入。

文件的内存映射操作

  • mmap是一种内存映射文件的方法,即将一个文件或者其他的映射对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟控件中一段虚拟地址的映射关系。实现这种映射关系之后,进程可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,也就是对文件的操作不必调用read或者write等系统调用函数,相同的,在内核空间内这一段的区域也直接改为用户空间,从而实现不同进程的文件的共享。
  • 使用mmap进行映射,会得到一个磁盘和某一个文件的地址相同的地址,当往这个地址写内容的时候,内容会直接写到文件中,比正常的系统调用要少一次拷贝的过程。
  • 正常调用写文件的流程图
    在这里插入图片描述

  • mmp内存映射写文件的流程图
    在这里插入图片描述

  • void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset)第一个参数表示映射的地址,如果地址设置为NULL,内核会自动挑一个地址来进行映射;第二个参数表示映射有多长;第三个参数描述了要求的内存保护,包括PROT_EXEC,PROT_READ,PROT_WRITE,PROT_NONE;最后一个参数表明如果对内存进行修改能否被其他的进程看到,包括MAP_SHARED和MAP_PRIVATE。

#include<stdio.h>
#include<unistd.h>
#include<sys/mman.h>
#include<fcntl.h>
#include<stdlib.h>

typedef strucy{
	int integer;
	char string[24];
}RECORD;

#define NRECORDS(100)

int main(){
	RECORD record,*mapped;
	int i,f;
	FILE *fp;
	
	fp=fopen("records.dat","w+");
	for(i=0;i<NRECORDS;i++){
		record.integer=i;
		sprintf(record.string,"RECORD-%d",i);
		fwrite(&record,sizeof(record),1,fp);//写record的数据,长度为record的大小,写一次,写到fp文件中
	}
	fclose(fp);
	
	fp=fopen("records.dat","r+");
	fseek(fp,43*sizeof(record),SEEK_SET);
	fread(&record,sizeof(record),1,fp);
	//修改fp的数据
	record.integer=143;
	sprintf(record.string,"RECORD-%d",record.integer);
	
	//修改后写回
	fseek(fp,-1*sizeof(record),SEEK_CUR);
	fwrite(&record,sizeof(record),1,fp);
	fclose(fp);

	//----------------------------------------------------------
	//使用mmap
	f=open("records.dat",O_RDWR);
	mapped=(RECORD *)mmap(0,NRECORDS*sizeof(record),PROT_RDAD|PROT_WRITE,MAP_SHARED,f,0);//第一个参数0表示内核挑选映射的地址;第二个参数表示映射的大小;第三个参数表示权限,可读可写;第四个参数表示可以共享;第五个参数表示被映射的文件;第六个参数表示映射从文件起始的位置开始的偏移量。执行完成后,整个文件全部映射到内存中,相当于一个数组mapped
	mapped[43],integer=243;
	sprintf(mapped[43].string,"RECORD-%d",mapped[43].integer);//操作数组一样操作内存
	msync((void*)mapped,NRECORDS*sizeof(record),MS_ASYNC);//把内存和辅存中的文件同步起来
	munmap((void*)mapped,NRECORDS*sizeof(record));//解开映射
	close(f);
	
	return 0;
}

文件目录

文件目录对应的是文件的属性信息,FCB文件控制块,存放文件的属性信息;文件的属性信息与文件的实体不是存在在一个位置上的,把文件的属性信息存放在一个位置,这一类的文件叫做目录文件,也就是windows上的文件夹

#include<unistd.h>
#include<stdio.h>
#include<dirent.h>
#include<string.h>
#include<sys/stat.h>
#include<stdlib.h>

void printdir(char *dir,int depth){
	DIR *dp;
	struct dirent *entry;//对应目录中的一项
	struct stat statbuf;//文件的状态status
	if((dp=opendir(dir))==NULL){//返回一个目录流
		fprintf(stderr,"cannot open directory:%s\n",dir);
		return;
	}
	chdir(dir);
	while((entry=readdir(dp))!=NULL){//读一个dirent,并且指针指向了下一个dirent
		lstat(entry->d_name,&statbuf);
		if(S_ISDIR(statbuf.st_mode)){
			if(strcmp(".",entry->d_name)==0||strcmp("..",entry->d_name)==0)
				continue;
		printf("%*s%s/\n",depth,"",entry->d_name);
		printdir(entry->d_name,depth+4);//递归调用,深度优先搜索
		}
		else printf("%*s%s\n",depth,"",entry->d_name);
	}
	chdir("..");
	closedir(dp);
}

int main(){
	printf("Directory scan of /home:\n");
	printdir("/home",0);
	printf("done\n");
	return 0;
}
  • #include <dirent.h>:头文件

  • DIR *opendir(const char *name);:opendir函数用于打开指定的目录,并返回一个目录指针。

  • struct dirent *readdir(DIR *dirp):readdir函数用于读取目录项,它返回一个指向struct dirent的指针,该指针指向的结构体包含了目录项的信息。dirp参数是由opendir函数返回的目录指针。

  • int mkdir(const char *pathname, mode_t mode);:mkdir函数用于创建一个新的空目录。pathname参数是你想要创建的新目录的名称,mode参数则用于设置新目录的权限。

  • int chdir(const char *path);:path参数是你想要切换到的新工作目录的路径。

  • char *getcwd(char *buf, size_t size);:getcwd函数用于获取进程的当前工作目录。buf参数是一个字符数组的指针,用于存储返回的目录路径。size参数是buf数组的大小。

  • int closedir(DIR *dirp);:closedir函数用于关闭一个打开的目录。dirp参数是由opendir函数返回的目录指针。

讨论

请用代码展示使用标准c语言和使用系统调用来操控文件的区别

讨论:使用标准的c函数操控文件的函数包括fopen、fgets、fputc、fclose等,并且使用标准c函数操控的是文件的指针类型;而使用系统调用操控文件的函数包括open、read、write等,使用系统调用操控的是文件的描述符。

什么是mmap,怎么使用mmap来在多进程中共享内存

讨论:mmap是内存映射文件的一种方法,即将一个文件或者其他的映射对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址的映射关系。使用mmap进行映射,会得到磁盘和某一个文件的地址相同的地址,实现内存的共享

什么是文件夹?你能在文件夹里写点什么吗?为什么?描述文件夹的结构,并使用代码演示如何扫描文件夹。

讨论:文件目录对应的是文件的属性信息,文件的属性信息与文件的实体不是存在在一个位置上的,把文件的属性信息存放在一个位置,这一类的文件叫做目录文件,也就是windows上的文件夹。
代码看上面。

写一个自己版本的grep命令
略

操作系统虚拟机中Linux终端的C语言文件操作 操作系统 安装gcc,完成hello.c,fork.c,processes.c,communication.c等一系列在终端下的C语言的操作 1安装gcc 通过下述命令行检查是否含有gcc 1. gcc --version 若已经安装gcc,则会出现下述图片: 若还没有安装gcc,也就是上述命令报错的话,可以通过输入下述命令行来下载gcc sudo apt-get install build-essential 2删除文件的方式 可通过rm -rf 文件名,这个指令可以删除文件夹和文件 3h 阅读详情

相关推荐

C语言linux下的文件操作(1)

文件操作: 欢迎加入QQ:498903810 一起交流、讨论知识,里面有大佬,也有小白,天下码农一家亲,大家一起讨论进步。 1、静态文件(Inode) 硬盘中的文件,就是静态文件。每一个文件都是以多个块和多个扇区组成的,一般情况,一个扇区(512字节),64个扇区组成一个块。 在硬盘中,对文件管理有一个特定的规则(文件管理表 + 真实的内容):文件管理表,这个表中是以

风吹过 2344

LinuxC学习日记

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言零、(第一次发博客,难免会有错误,望您不吝一、编程环境介绍虚拟机为什么要安装虚拟机常用的Linux系统二、嵌入式解释解释什么t*d叫t*d嵌入式裁剪三、目录结构四、五、直奔主题 : 结构体概念定义结构体初始化访问方式一:通过结构体变量访问成员方式二:通过结构体指针访问成员我好困,那就明天再写吧 前言 提示:这里可以添加本文要记录的大概内容: 刚开始学习嵌入式人工智能,基于Linux的C语言课程。 记录一下目前所学的内容: .

qq_38813765的博客 2818

Linux C文件操作函数参考指南

htmltable {th, td {th {pre {简介:本文详细探讨了Linux系统中C语言进行文件操作时使用的各种函数,涵盖了从文件打开、读写、位置控制到文件权限管理的各个方面。通过实例讲解了fopen()fclose()fread()fwrite()fgets()fscanf()fprintf()fputs()fseek()ftell()rewind()feof()ferror()chmod()access()remove()

weixin_36382073的博客 879

【Linux】应用编程之C语言文件操作

Linux进阶编程之文件操作前言一、工程的创建1、目录结构2、Makefile二、文件的操作1.打开、关闭文件:open、close2.读取、写入文件:read、write3.综合练习三、文件夹的操作1.2.3.最后 前言   对于文件IO来说,一切都是围绕文件描述符来进行的,在Linux系统中所有打开的文件都是一个对应的文件描述符。   文件描述符的本质是一个非负整数,当我们打开一个文件时,系统会给我们分配一个文件描述符。   当我们对一个文件做读写操作的时候,我们使用open函数的时候返回的就是这个文

凉开水白菜的博客 3289

Linux下C语言_文件操作

在Linux下C语言对文件操作的函数。如:open(),close(),write(),read()的使用。

Linux下C语言实现文件拷贝

在Linux下用C语言实现文件拷贝的代码

linux下c语言文件操作

本文将讲述linux系统下c语言操作文件 学习文件操作时,C 语言提供了一系列标准库函数来进行文件的创建、打开、读取、写入和关闭等操作。

qq_52660422的博客 2288

绝缘体上硅(SOI) vs 传统硅片:5个关键性能对比及适用场景分析

本文深入对比了绝缘体上硅(SOI)与传统硅片在功耗、速度、隔离性等5个关键性能维度的差异,并分析了各自适用场景。SOI技术凭借其独特的埋氧层结构,在低功耗、高频应用和极端环境下展现出显著优势,特别适合移动设备、汽车电子和航天应用。

weixin_30335575的博客 554

Linux-C 文件操作

Linux-C 文件操作 一、简述 记--Linux环境下C语言编程的文件操作。 两种操作文件的方式: 1、系统I/O:系统调用接口,open(), read(), write(), lseek(), close()。是操作系统直接提供的编程接口(API)。 2、标准/IO:标准库的I/O函数,fopen(), frea...

Genven_Liang的博客 4万+

LabVIEW面向对象编程:操作者框架入门实战

本文是LabVIEW面向对象编程中操作者框架的入门实战指南。针对传统“面条式代码”在复杂项目中的维护难题,文章通过创建操作者、定义消息与处理函数、在主VI中调用等步骤,详细演示了如何利用操作者框架构建模块化、易扩展的应用程序架构,有效管理并行任务。

f0g1h2的博客 589

Arduino蜂鸣器播放《Astronomia》:从乐谱到代码的嵌入式音乐实现

在嵌入式系统开发中,通过编程控制硬件执行特定任务是核心基础。其原理在于利用微控制器生成精确的时序和频率信号,驱动执行器(如蜂鸣器、电机)完成预定动作。这项技术的价值在于实现了软件逻辑与物理世界的直接交互,是物联网设备、智能硬件开发的基石。常见的应用场景包括电子玩具的音效生成、报警器设计以及交互式艺术装置。本文以热门歌曲《Astronomia》的播放为例,具体展示了如何运用Arduino的`tone()`函数和数组数据结构,将抽象的乐谱转化为可执行的频率与延时控制代码,完整呈现了从**核心硬件解析**到**软

weixin_29796279的博客 347

【Linux文件操作】C库函数操作

在 Linux 系统编程领域,文件操作是开发者必须掌握的核心技能。C 语言标准库提供了一套完善的文件操作函数,这些函数在底层系统调用的基础上进行了封装,既简化了编程复杂度,又保证了良好的跨平台兼容性。本文将系统讲解 Linux 环境下使用 C 库函数进行文件操作的全流程,涵盖文件的创建、打开、读写和关闭等关键环节。​

byte轻骑兵的技术小窝 7657

stm32f103c8t6+esp8266在WiFi下通过手机控制外设

stm32f103c8t6+esp8266在WiFi下通过手机控制外设前言 前言 通过上一篇,介绍了esp8266的基本功能,这篇将用stm32c8t6配合esp8266进行数据交互,实现用手机通过无线的方式去控制外设、开关等;这里相当于把stm32作为上一篇的串口助手和esp8266进行通信; ...

weixin_45430735的博客 1万+

C语言文件操作,linux文件操作,文件描述符,linux下一切皆文件,缓冲区,重定向

为什么我们可以把文件创建在进程当前路径中,当前路径到底是什么意思?我们在运行可执行程序后程序变成了进程,而进程在我们之前的学习中,我们知道进程有进程的pcb结构体,这个结构体中存放了进程的各种信息,那么我们运行进程时所在的路径也会被记录下来,这个路径就是当前进程所在的路径,也就是当前路径的根本意义;下面我们通过实际现象来证明我们思路:由此我们可以清楚的明白所谓的当前路径就是存储在进程的pcb结构体中的进程信息,我们只要通过查找进程的结构体就可以找到我们的当前路径;

m0_75260318的博客 1426

电机控制基础,小白入门篇

电机,这个藏在风扇、电动车、机器人里的“动力心脏”,如何精准控制它的转速、方向甚至力量?这篇博客专为完全零基础的小白打造,用“说人话”的方式拆解电机控制的底层逻辑,帮你从“看不懂电路图”到“能调个简单电机”。 电机控制不是“大神专属”,只要掌握“电生磁、磁生力”的底层逻辑,加上动手实践,小白也能快速入门。这篇博客会陪你从“看电机转”到“让电机听话”,把复杂的控制原理变成能上手玩的“小实验”。准备好你的面包板和电机,我们一起开启“电控之旅”吧!

汽车电子软件领域知识分享 5592

BES2300x笔记(36) -- OTA升级

哈喽大家好,这是该系列博文的第三十六篇~ 篇~ <<【系列博文索引】快速通道 >> 一、前言 BES 蓝牙方案自带 OTA(Over The Air)功能,该功能可以对蓝牙固件进行在线升级,目前该功能支持通过安卓手机(苹果手机也有对应APP,未实际测试)对蓝牙固件进行升级,以后还会支持通过 PC 端进行在线升级。在使用 OTA 功能之前,用户需安装 BES 提供的手机 apk 软件,将需要升级的固件拷贝到手机,然后通过该 apk 软件进行在线升级。

文化人的博客 5356

基于 C 语言 LINUX 的文件操作

基于 C 语言 LINUX 的文件操作  作者:高玉涵  时间:2022.2.8 10:20 (福虎年初八)  博客:blog.youkuaiyun.com/cg_i 底层文件访问(Low-Level File Access)和文件描述符(File Descriptor)  即使看到“底层”二字,也会有读者臆测其难以理解。实际上,“底层”这个表达可以理解为“与标准无关的操作系统独立提供的”。稍后讲解的函数是由 Linux 提供的,而非 ANSI 标准定义的函数。如果想使用 Linux 提供的文件 I/O 函数,首先应该

2476

基于YOLOv5/v8/v10的垃圾分类识别系统:设计实现与性能优化(附代码+数据集)

做完这个毕设,你已经掌握了从数据准备、模型训练到界面开发的全流程。把模型部署到树莓派上,做个真正的“智能垃圾桶”硬件装置;加入语音提示功能,检测到垃圾后自动语音播报类别;试试融合多个YOLO模型的优势,让分类精度再上一个台阶。按照这个教程一步步做,你的毕设不仅能顺利完成,还能做出很多亮点。要是过程中遇到啥问题,别慌,慢慢琢磨或者咱们一起聊聊,肯定能把这个毕设做成让你满意的作品。

know_F0727的博客 462

linux环境:C编程文件操作

linux环境:C编程文件操作C语言标准函数库文件操作函数Linux目录操作基于文件描述符的Linux文件操作基本文件操作-打开、关闭与读写MMAP文件映射 C语言标准函数库文件操作函数 打开文件:foen(文件名,打开格式) 关闭文件:fclose(文件名) 无格式读文件:fread(目标地址,读取单位大小,读取个数,源文件指针) 无格式写文件:fwrite(源地址,读取单位大小,读取个数,目...

black_kyatu的博客 4015

在ParaView中编程实现涡量可视化

综上所述,本文介绍了在ParaView中使用编程方式实现涡量可视化的方法,并提供了相应的Python代码示例。通过灵活运用ParaView的编程接口,我们可以根据特定需求定制复杂的数据可视化流程,进一步深入了解和分析流体的旋转行为。ParaView是一款强大的开源数据可视化工具,它提供了丰富的功能和灵活的编程接口,使用户能够定制数据可视化流程。你可以根据需要自定义颜色映射范围和颜色,上述代码中的RGBPoints列表中包含了两个点,分别对应涡量值为0和10时的颜色。在实际使用过程中,你需要替换代码中的。

ByteProwl的博客 1434

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

linux c 文件操作

linux  C 文件操作操作流程 文件操作 目录操作 链接操作   stat 索引节点结构体  struct stat { dev_t st_dev; ino_t st_ino; mode_t st_mode; nlink_t st_nlink; uid_t st_uid; gid_t st_gid; dev_t st_rdev; off_t st_size; u

KanG 1137

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Linux下C语言的文件操作

Linux下C语言的文件操作 文件的读写 代码 #include <stdio.h> #include <unistd.h> #include <string.h> #include <fcntl.h> #include <errno.h> #include <sys/types.h> #include <sys/stat.h> #define BUFFSIZE 512 #define MSG "hhhh9999" in

weixin_52395571的博客 144

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

[Linux C编程]文件操作

文件操作 1. Linux系统调用及用户编程接口(API) 所谓系统调用是指操作系统提供给用户的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的的服务 为什么用户程序不能直接访问系统内核提供的服务呢?

三月,有人呼唤你的名字 1159
上一篇: linux shell程序设计
下一篇: Linux gcc和make学习
@@老胡
博客等级 码龄7年 291粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值