- 博客(60)
- 资源 (1)
- 收藏
- 关注
原创 bat字符串操作函数(2)--left函数-返回指定数目的从字符串的左边算起的字符
::#################################################################################################::1.2.2 返回指定数目的从字符串的左边算起的字符。::call :_job_str_Left_fun _job_str_var _job_Len_val::############...
2019-08-17 00:45:57 639
原创 bat字符串操作函数(1)--len函数:求字符串的长度
::#################################################################################################::1.2.1 求字符串的长度::call :_job_str_Len_fun _job_var_str _job_var_Len::##########################...
2019-08-17 00:43:22 4216 1
原创 bat脚本通用按键交互控制函数-onkeydown函数
::#################################################################################################::1.1.1 通用按键交互控制函数::call :_job_gui_onkeyDown_fun var_CMD_KEYS_CHR val_tmp_label_chr var_CMD_KE...
2019-08-17 00:39:38 2769
原创 bat之数组操作(7)-Print函数:打印数组,并返回所有序号
::#################################################################################################::1.3.7 打印数组,并返回所有序号::_job_arr_Print_fun _job_Print_array_var _job_Print_NUM_var _job_var_P...
2019-08-17 00:28:21 2255
原创 bat之数组操作(6)-install函数:环境变量安装
::#################################################################################################::1.3.6 环境变量安装:删除原先的新增-增添新数组-备份新增数组::call :_job_arr_Install_fun _job_arr_Install_var _job_arr_Ins...
2019-08-17 00:26:26 363
原创 bat之数组操作(5)-sub函数:将A中所有属于B的元素删除并返回A
::#################################################################################################::1.3.5 将A中所有属于B的元素删除并返回A::call :_job_arr_Sub_fun _job_Sub_A_var _job_Sub_B_var _job_arr_delim...
2019-08-17 00:23:58 602
原创 bat之数组操作(4)--join函数:将一个数组连接到另一个数组
::#################################################################################################::1.3.4 将一个数组连接到另一个数组::call :_job_arr_Join_fun _job_Join_array_var _job_Join_new_var _job_J...
2019-08-17 00:21:17 648
原创 bat之数组操作(3)-read函数:读出一维数组的一个元素
::#################################################################################################::1.3.3 读出一维数组的一个元素::_job_arr_Read_fun _job_Read_array_var _job_Read_item_var _job_Read_index_...
2019-08-17 00:19:14 2646
原创 bat之数组操作(2)-add函数:追加新元素并删除重复的元素
::#################################################################################################::1.3.2 追加新元素并删除重复的元素::call :_job_arr_Add_fun _job_Add_array_var _job_Add_item_var _job_Add_se...
2019-08-17 00:14:45 833
原创 bat之数组操作(1)-del函数:删除元素
::#################################################################################################::1.3.1 删除元素,包括相同的重复元素::call :_job_arr_Del_fun _job_Del_array_var _job_Del_item_var _job_arr_deli...
2019-08-17 00:03:29 696
原创 5.9 fread和fwrite函数-二进制I/O
也是刚学unix编程,而且是第一次用c语言写东西。下面是个人推测:(1)单字符流读写函数(如fgetc/fputc)不适合用于处理文本文件和二进制文件,更适合于一些程序的快捷键命令之类的处理过程。(2)单行流读写函数不适合处理数据库之类有着复杂数据结构的文件,更适合从标准输入和标准输出中取数据或者显示数据。上述两种标准函数也都可以处理各种二进制数据,但是处理过程会很复杂,效率也会很低:
2013-11-07 15:19:23 1152
原创 5.5 fopen、freopen和fdopen函数-打开流
fopen、freopen和fdopen函数-打开流实例 x.5.5.1.c#include int main(void){ char pathname[] = "/tmp/myfile"; FILE *fp; if ((fp=fopen(pathname, "r")) == NULL) { printf("fopen
2013-11-07 12:16:45 3526
原创 5.7 fgets/fputs和gets/puts-流的单行读写
fgets/fputs、gets/puts是两对用于流的单行读写函数。函数原型:#include char *fputs(char *restrict buf, int n, FILE *restrict fp);char *gets(char *buf);返回值:若成功则返回buf,若已到达文件结尾或者出错则返回NULL参数:buf 为存放取出字符的缓冲区地址
2013-11-06 23:55:49 1262
原创 5.6 getc/putc、fgetc/fputc和getchar/putchar-流的单字符读写
getc/putc、fgetc/fputc和getchar/putchar是三对用于一次一个字符的流读写函数。fgetc/fputc前面带f(function)表示在库的实现中一定要定义为函数。而getc/putc表示在库的实现中可以定义为宏,当然也可以定义为函数。getchar/putchar表示操作对象为标准输入(stdin)和标准输出(stdout)。函数原型:#includ
2013-11-06 22:42:36 1772
原创 4.25 小结
本章内容一直围绕stat结构,分析了stat各个成员在表示文件相关属性中的意义以及相对应的操作函数:1、文件的stat结构反应了文件在文件系统中的管理信息。2、GNU C 对stat结构的定义如下,熟悉这个定义很重要。struct stat { __dev_t st_dev; /* Device. */ unsigned short int __pad1;
2013-11-06 13:05:18 642
原创 4.23 st_dev和st_rdev成员-文件设备号
一、主、次设备号每个文件都有主次设备号,主设备号用来区分不同类型的设备,次设备号用来区分同一类型的不同设备。同一类型的设备具有相同的驱动程序,主设备号用来标识驱动程序。而次设备号用来标识具体指向哪个设备。对于普通文件来讲,其主设备号来标识实际存储设备的主设备号,而次设备号表示所在文件系统的所在分区(可以把同一存储设备的不同分区看成是不同的设备)。二、stat.st_dev和st_rde
2013-11-06 12:28:14 6043
原创 4.22 chdir、fchdir和getcwd函数-当前工作目录
虽然《Unix环境高级编程》一书把chdir和fchdir函数放到文件管理这部分来讲,但严格讲这两个函数不属于文件系统管理的函数,应该属于进程管理的函数。这两个函数用于改变进程的当前工作目录,而进程的当前工作目录是进程的属性,所以它们不属于文件系统管理函数,但它却涉及到文件管理(例如文件的相对路径问题)。所以放到这里来将也是有道理的。但getcwd函数不应该放到这节来讲,而是应当放到上一节《4.2
2013-11-05 22:21:58 2021
原创 4.21 opendir、readdir和closedir函数-读目录
mkdir和rmdir分别用户创建目录文件和删除目录文件。自然还会有读目录文件的函数。opendir函数用于打开一个目录文件,获取一个目录描述符,相当于普通文件的open函数;closedir函数用于关闭一个已经打开的目录文件,相当与普通文件的close函数;readdir函数用于逐个读出目录表中的目录项(参考《4.20 mkdir和rmdir函数》),相当于普通文件的read函数。
2013-11-05 21:18:32 2127
原创 4.20 mkdir和rmdir函数-目录的创建与删除
一、mkdir函数mkdir函数用于创建一个新目录,函数原型:#include int mkdir(const char *pathname, mode_t mode);返回值:若创建成功则返回0,若出错则返回-1参数:pathname 要创建的新目录的路径mode 文件创建模式字。(参考《4.5 文件访问权限》、《4.6 新文件和新目录的所有权》和《4.8
2013-11-05 19:59:19 4565
原创 4.17 symlink和readlink函数-符号链接
一、symlink函数symlink函数用于创建一个符号链接文件。函数原型:#include int symlink(const char *actualpath, const char *sympath);返回值:如果创建成功则返回0,否则返回-1参数:actualpath 要指向的路径sympath 被创建的新目录项路径symlink的本质是相当于cr
2013-11-05 16:09:43 3618
原创 4.15 link、unlink函数-创建和删除硬链接
link函数用于创建一个指向已存在文件的新目录项。函数原型如下:#include int link(const char *existingpath, const char *newpath);返回值:若成功则返回0,若失败则返回-1参数:existingpath 一个以存在文件的路径newpath 新目录项的路径一、目录项和硬链接可以这么理解,不管是fa
2013-11-05 14:46:14 3340
原创 4.19 utime函数-文件时间修改
除了文件处理函数隐性地处理文件时间属性外,很多时候应用程序时间显式地处理时间属性,例如更改文件的时间属性,用文件的时间属性作为一个事务处理的依据,有时候还要将时间变成让人看懂的字符打印出来。(时间到了,睡觉去!)
2013-11-05 02:47:48 2546
原创 4.18 st_atime、st_mtime和st_ctime成员-文件时间属性
文件属性包括数据属性和管理属性。所谓数据属性就是文件所记录的数据,是创建一个文件的真正目的。而管理属性则是出于管理目的而产生的信息,例如文件名、文件创建时间、文件修改时间、文件权限、文件用户ID和文件组ID,这些都是出自于管理目的而产生的,并随着管理的变动而变动。stat结构(参考《4.2 stat函数》)反映的信息全部为文件的管理属性。stat.st_atime(数据的最后访问时间)、sta
2013-11-05 02:08:14 30124
原创 4.12 st_size、st_blksize和st_blocks成员-文件尺寸
struct stat结构(参考《4.2 stat函数》)中的一些数据成员可以反应文件所占用的存储空间以及所在的文件系统参数。其中常用的有:st_blksize(文件的块大小)、st_blocks(文件包含的块数)和st_size(文件大小字节数)。所谓块大小就是文件系统在给文件分配空间时的最小单位。文件系统并不是以字节为单位给具体文件分配存储空间,都是以一个合适大小(例如512字节等)为单位
2013-11-05 00:59:25 9771 3
原创 4.11 chown、fchown和lchown函数-文件用户与用户组
chown、fchown和lchown函数用于更改文件的用户ID(stat.st_uid)和组ID(stat.gid)。函数原型如下:#include int chown(const char *pathname, uid_t owner, gid_t group);int fchown(int filedes, uid_t owner, gid_t group);int lchow
2013-11-05 00:22:03 3492
原创 4.9 chmod和fchmod函数-文件权限修改
chmod和fchmod函数用于保存stat.st_mode成员所代表的文件属性到磁盘。函数原型:#include int chmod(const char *pathname, mode_t mode);int fchmod(int filedes, mode_t mode);返回值:若成功则返回0,若出错则返回-1参数:pathname 文件路径filedes
2013-11-04 22:13:59 2373
原创 4.8 umask函数-文件模式创建屏蔽字修改
umask函数用于为进程设置文件模式创建屏蔽字,并返回以前的值。函数原型如下:#include mode_t umask(mode_t cmask);每个进程都有一个文件模式创建屏蔽字,用于对新创建的文件或新目录的权限进行控制。文件模式创建屏蔽字是进程的一个属性,其数据类型是mode_t。是S_IRUSR和S_IWUSR等常量的组合。不过意义却与这些常量相反:文件模式创建
2013-11-04 20:33:35 2007
原创 4.7 access函数-文件权限测试
access函数用于按实际用户ID和实际组ID进行访问权限测试。函数原型如下:#include int access(const char *pathname, int mode);返回值:若测试成功则返回0,若出错则返回-1参数:pathname 文件路径mode 所要测试的权限,是一些预定义的常量mode值代表权限R_O
2013-11-04 19:32:38 705
原创 4.6 新文件的默认用户与用户组
open和creat函数用于创建新文件,link函数用于创建一个硬链接,symlink用于创建一个符号链接,mkdir用于创建一个新目录。这些函数都可以看作是创建新文件的函数。这些函数的原型汇总如下:int open (const char *pathname, int oflag, ...);int creat (const char *pathname, mode_t mode);
2013-11-04 19:06:37 1154
原创 4.5 st_mode成员-文件访问权限
一、stat.st_mode数据位分析stat.st_mode数据包含着文件很多属性,对st_mode的操作都是在位级进行,包括文件类型、S_ISGID位和S_ISUID位。下面是st_mode其中一些位的分布汇总表,是从GUN C库的头文件中对一些常量的定义做出来的分析和汇总。st_mode位分布表位文件属性相关常量(八进制)bit12-bit
2013-11-04 16:57:02 6101 1
原创 4.4 S_ISUID、S_ISGID位与文件访问权限检查
一、进程的文件访问权限。一个程序在其执行过程可能要访问其他文件,当其进程要访问相关文件,例如调用open、read、write等函数时,系统内核会检查用户对文件的访问权。每个进程都有一个进程属性数据结构记录着进程的相关信息。下表中的进程信息记录项是内核检查进程对文件访问权限的主要依据。进程信息信息意义实际用户ID标识是此用户在执行本进程
2013-11-03 19:41:42 7409
原创 4.3 文件类型判断宏与文件类型常量
文件类型信息包含在stat结构的st_mode成员中,大多数系统都在文件中定义了对应的类型字和类型判断宏。一、判断文件类型方法有两种:(1)用文件类型判断宏:例如S_ISREG(buf.st_mode)(2)先用文件类型屏蔽字(S_IFMT)与buf.st_mode进行“与”运算,然后再与对应的类型字相比较。例如:(buf.st_mode & S_IFMT) == S_IFRE
2013-11-03 11:48:04 5133
原创 Glibc所实现的规范与功能宏对应表
Glibc 全部或者部分实现很多规范,要启用相关规范,就必须定义关对应的宏。定义对应的宏有两种方法:(1)在cc命令中指定,如:cc -D _POSIX_SOURCE file.c(2)将源程序的第一行设置为:#define _POSIX_SOURCE 1下面是Glibc所实现的规范与功能宏对应表Glibc所实现的规范与功能宏对应表规范对应宏
2013-11-03 08:54:37 936
原创 4.2 lstat函数-文件读写定位
lstat函数用于获取符号链接文件的属性信息(例如文件类型、访问权限和访问时间等)。函数原型如下:#include int lstat(const char *restrict pathname, struct stat *restrict buf);其中struct sata结构定义在文件中。返回值:成功返回0,出错返回-1。参数:1、pathname 文件路径2、
2013-11-03 01:50:08 816
原创 4.2 fstat函数-读取文件属性
stat函数用于获取文件的属性信息(例如文件类型、访问权限和访问时间等)。函数原型如下:#include int fstat(int filedes, struct stat *restrict buf);其中struct sata结构定义在文件中。返回值:成功返回0,出错返回-1。参数:1、filedes已打开的文件描述符。2、buf存储struct stat结构信
2013-11-03 01:34:59 835
原创 4.2 stat函数-读取文件属性
stat函数用于获取文件的属性信息(例如文件类型、访问权限和访问时间等)。函数原型如下:#include int stat(const char *restrict pathname, struct stat *restrict buf);其中struct sata结构定义在文件中。返回值:成功返回0,出错返回-1。参数:1、pathname 文件路径2、bu
2013-11-03 01:17:24 1641
原创 3.15 ioctl函数
不能用open、creat、read、write、pread、pwrite、lseek、close、dup、dup2、sysnc、fsync、fdatasync和fcntl这些通用函数进行的I/O操作,一般都要考虑用ioctl来操作。函数原型:#include #include #include int ioctl(int filedes, int request, ...);
2013-11-03 00:19:09 721
原创 3.4 creat函数-创建文件
creat函数用于创建一个新文件。函数原型如下:#include int creat(const char *pathname, mode_t mode);返回值:成功则返回为只写打开的文件描述符,若出错则返回-1。参数:pathname 要创建的文件路径或文件名。mode 文件创建模式字。creat可以被open(pathname, O_WRONLY | O
2013-11-03 00:10:52 1442
c/c++与java命令行编译配置脚本
2019-08-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人