Linux系统编程初探系列之一:文件编程

系统函数 int creat(const char* filename,mode_t mode)

filename:需要创建的文件名(包含路径,缺省为当前路径)

mode:创建模式

常见的创建模式有:S_IRUSR------可读

         S_IWUSR-----可写

         S_IXUSR-----可执行

         S_IRWXU-----可读、可写、可执行

除了用上述宏 还可以用数字来表示文件的访问权限

          1------->可执行

          2------->可写

          4------->可读

          6------->可读可写

          7------->可读可写可执行

          0------->无任何权限

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <sys/types.h>
 4 #include <sys/stat.h>
 5 #include <fcntl.h>
 6
 7 void  create_file(char *filename)
 8 {
 9     /*创建的文件具有可读可写的属性*/
10     if(creat(filename,0666)<0)
11     {
12         printf("create file %s failure!\n",filename);
13         exit(EXIT_FAILURE);
14     }
15     else
16     {
17         printf("create file %s success!\n",filename);
18     }
19 }
20
21 int main(int argc,char *argv[])
22 {
23     /*判断入参有没有传入文件名 */
24     if(argc<2)
25     {
26         printf("you haven‘t input the filename,please try again!\n");
27         exit(EXIT_FAILURE);
28     }
29     for(i=1;i<argc;i++)
30     {
31         create_file(argv[1]);
32     }
33     exit(EXIT_SUCCESS);
34 }            

程序点评:

1.creat(filename,0666) -------666的权限分别对应于文件所有者,文件所有者所在组,其他用户

2.int main(int argc,char*argv[])----------------在执行程序的时候,argc是输入参数个数,argv[]是保存着文件名(本质是字符串地址)

  所以在执行程序时,在命令端输入   ./file_creat test  才能创建文件

  argc 命令行的总的参数个数(即使 运行程序./file_creat 后面没有文件,个数也是1)

  记录了用户在运行程序的命令行中输入的参数的个数

  argv[]存储argc个指针变量的数组

  其中第0个元素是程序名,后面的元素是用户输入的参数

  

时间: 2024-11-03 21:42:20

Linux系统编程初探系列之一:文件编程的相关文章

Linux系统裁剪之二(Bash脚本编程之十二)

Linux系统裁剪之二(Bash脚本编程之十二) 系统函数库 ·Linux系统的启动流程     1,POST(加电自检) 计算机本身并不会执行程序,它只是一堆破铜烂铁,但是它可以在开机的时候先去载入一段程序,系统在刚刚启动的时候能够实现将某个ROM芯片中的程序映射到CPU能够寻址的地址空间中去,并且让CPU能够执行其中的指令,这些指令大部分都是用来做系统检测的,当检测完成后,如果系统中所有的基本硬件和核心硬件都没有问题的话,接下来就会根据BIOS中设定的系统启动次序(Boot Sequence

Linux系统中修改/etc/profile文件的方法

在Linux系统中etc/profile文件一般是不能更改的,想要更改etc/profile文件就要用一些特殊的技巧进行Linux文件修改.本文就来介绍一下Linux系统中修改/etc/profile文件的方法: etc/profile文件是只读的,直接用vi或gedit打开修改后是无法保存的.要修改profile,需要取得root权限,(使用gedit编辑) $sudo gedit /etc/profile 或者 $sudo -s $gedit /etc/profile 这样打开profile

linux系统下迁移mysql数据库文件

linux下(这里是centos),mysql安装后,数据库的数据默认存放在/var/lib/mysql目录下,如果该目录下挂载的磁盘空间很少,不够用,需要迁移到其他的目录位置. 方法一: 参照windows下的方法,把/var/lib/mysql移到需要的目录,再修改/etc/my.cnf文件,指定数据目录.这方面的教程网上很多,大家可以去搜索一下. 方法二: 使用linux下的软连接方法,具体操作如下:(以迁移到/home/mysql/目录为例) 先停止mysql: /etc/init.d/

linux系统使用scp工具拷贝文件

linux系统使用scp工具拷贝文件: scp  /tmp/xxx   [email protected]:/mnt

linux系统下怎么安装.deb文件?

deb 是 ubuntu .debian 的格式. rpm 是 redhat .fedora .suse 的格式. 他们不通用(尽管能够转换一下). deb是debian发行版的软件包 ubuntu是基于debian 发行的 全部能够用 .deb是solaris系统下的安装包后缀名.安装方法例如以下 cd 到安装包的文件夹 dpkg -i 安装包名字 假设你使用的是red hat linux,然后执行下面命令安装 cd 到安装包的文件夹 rpm -ivh 安装包名字 linux系统下怎么安装.d

linux系统产生和调试coredump文件

系统配置了coredump后,当程序异常终止时操作系统会在指定的目录下按指定的文件名格式产生一个core文件.core文件是程序内存映像以及相关的调试信息,通过gdb调试coredump文件可以知道导致程序异常终止的原因. 1.系统配置coredump 首先是打开coredump,通过ulimit命令看coredump是否开启: [[email protected] coredump]# ulimit -a core file size (blocks, -c) unlimited data s

Linux基础 linux系统中的批量删除文件与空文件删除的命令介绍

Linux基础教程  linux系统中的批量删除文件与空文件删除的命令介绍 Linux资料下面删除文件或者目录命令rm(remove): Linux培训功能说明:删除文件或目录. 语 法:rm [-dfirv][--help][--version][文件或目录...] 补充说明:执行rm指令可删除文件或目录,如欲删除目录必须加上参数"-r",否则预设仅会删除文件. 参 数: -d或--directory 直接把欲删除的目录的硬连接数据删成0,删除该目录. -f或--force 强制删除

【转】linux系统下怎么安装.deb文件?

linux系统下怎么安装.deb文件? deb 是 ubuntu .debian 的格式.rpm 是 redhat .fedora .suse 的格式. 他们不通用(虽然可以转换一下). deb是debian发行版的软件包ubuntu是基于debian 发行的 所有可以用 .deb是solaris系统下的安装包后缀名.安装方法如下 cd 到安装包的目录 dpkg -i 安装包名字 如果你使用的是red hat linux,然后运行以下命令安装 cd 到安装包的目录rpm -ivh 安装包名字

linux系统下怎么安装.deb文件

linux系统下怎么安装.deb文件? deb 是 ubuntu .debian 的格式.rpm 是 redhat .fedora .suse 的格式. 他们不通用(虽然可以转换一下). deb是debian发行版的软件包ubuntu是基于debian 发行的 所有可以用 .deb是solaris系统下的安装包后缀名.安装方法如下 cd 到安装包的目录 dpkg -i 安装包名字 如果你使用的是red hat linux,然后运行以下命令安装 cd 到安装包的目录rpm -ivh 安装包名字

解决Linux系统没有/etc/sysconfig/iptables文件

Linux系统中,防火墙默认是不开启的,一般也没有配置过任何防火墙的策略,所以不存在/etc/sysconfig/iptables文件. 一.常规解决方法: 1.在控制台使用iptables命令随便写一条防火墙规则 iptables -A OUTPUT -j ACCEPT 2.使用 service iptables save 进行保存,默认就保存到了/etc/sysconfig目录下的iptables文件中. 但是,这个方法已经在一些版本的Linux下无法使用,比如Ubuntu,Debian.