01、LinuxC -- 系统调用 creat函数

函数原型>

int creat(const char *__file, mode_t __mode);

返回值>

creat( ) 会返回新的文件描述词,若有错误发生则会返回-1,并把错误代码设给errno。
1、EEXIST  参数pathname所指的文件已存在。
2、EACCESS  参数pathname所指定文件不符合所要求测试的权限。
3、EROFS  欲打开写入权限的文件存在于只读文件系统内。
4、EFAULT  参数pathname指针超出可存取的内存空间。
5、EINVAL  参数mode不正确。
6、ENAMETOOLONG  参数pathname太长。
7、ENOTDIR  参数pathname为一目录。
8、ENOMEM  核心内存不足。
9、ELOOP  参数pathname有过多符号连接问题。
10、EMFILE  已达到进程可同时打开的文件数上限。
11、ENFILE  已达到系统可同时打开的文件数上限

creat( )无法建立特别的装置文件,如果需要请使用mknod( )

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(int argc, char const *argv[])
{
    if (argc != 2)
    {
        printf("请输入文件名!\n");
        exit(1);
    }
    int fd = creat(argv[1], S_IRWXU | S_IRWXG | S_IRWXO);
    // errno: 系统的全局变量(所有应用程序都可以访问的),保存错误编号
    if (fd == -1)
    {
        printf("创建文件失败!\n");
        exit(1);
    }
    int fd1 = creat("world.txt", 0655);
    if (fd1 == -1)
    {
        printf("创建文件world.txt失败!\n");
        exit(1);
    }
    return 0;
}

运行结果:

superlan@GodFather:~/C_Language/file_io$ ./a.out hello.txt
superlan@GodFather:~/C_Language/file_io$ ls
a.out  file_demo.c  hello.txt  lseek_return.c  read_line_by_line.c  read_line.c  three_hello.c  world.txt
superlan@GodFather:~/C_Language/file_io$ ls -l
总计 36
-rwxrwxr-x 1 superlan superlan 16048  7月 30 14:44 a.out
-rw-rw-r-- 1 superlan superlan   658  7月 30 14:47 file_demo.c
-rwxrwxr-x 1 superlan superlan     0  7月 30 14:44 hello.txt
-rwxrwxrwx 1 superlan superlan   442  4月  5 20:56 lseek_return.c
-rwxrwxrwx 1 superlan superlan  2070  5月 26 17:17 read_line_by_line.c
-rwxrwxrwx 1 superlan superlan   884  4月  6 19:25 read_line.c
-rwxrwxrwx 1 superlan superlan  1317  4月  6 16:12 three_hello.c
-rw-r-xr-x 1 superlan superlan     0  7月 30 14:44 world.txt

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值