creat - 创建文件
函数介绍
creat系统调用用于创建新文件或截断已存在的文件。它是一个简化的文件创建函数,等价于open(path, O_WRONLY|O_CREAT|O_TRUNC, mode)。
函数原型
1 2 3 4 5 6
| #include <fcntl.h> #include <sys/stat.h> #include <unistd.h>
int creat(const char *pathname, mode_t mode);
|
功能
创建新文件或清空已存在的文件,返回只写权限的文件描述符。
参数
返回值
成功时返回文件描述符(非负整数)
失败时返回-1,并设置errno
特殊限制
文件总是以只写模式打开
如果文件已存在,会被截断为0字节
不支持追加模式等高级选项
相似函数
open(): 更灵活的文件打开函数
mkstemp(): 创建安全的临时文件
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| https://www.calcguide.tech/2025/08/08/creat系统调用及示例/#define _GNU_SOURCE #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> #include <string.h> #include <sys/stat.h>
int main() { int fd; printf("=== Creat函数示例 ===\n"); // 示例1: 基本文件创建 printf("示例1: 基本文件创建\n"); fd = creat("test_creat.txt", 0644); if (fd == -1) { perror("创建文件失败"); } else { printf("成功创建文件,fd=%d\n", fd); write(fd, "Hello from creat!", 17); close(fd); } // 示例2: 重复创建(会截断原文件) printf("示例2: 重复创建(截断原文件)\n"); fd = creat("test_creat.txt", 0644); if (fd != -1) { printf("重新创建文件(原内容被清空)\n"); write(fd, "New content", 11); close(fd); } // 示例3: 权限测试 printf("示例3: 不同权限创建\n"); int fd1 = creat("file_600.txt", 0600); // 仅所有者读写 int fd2 = creat("file_644.txt", 0644); // 所有者读写,其他用户读 int fd3 = creat("file_666.txt", 0666); // 所有用户读写 if (fd1 != -1) { printf("创建0600权限文件\n"); close(fd1); } if (fd2 != -1) { printf("创建0644权限文件\n"); close(fd2); } if (fd3 != -1) { printf("创建0666权限文件\n"); close(fd3); } // 清理测试文件 unlink("test_creat.txt"); unlink("file_600.txt"); unlink("file_644.txt"); unlink("file_666.txt"); return 0; }
|
https://www.calcguide.tech/2025/08/08/creat系统调用及示例/
data-ad-format="fluid"
data-ad-layout-key="-7k+ex-4a-9w+4a">
https://www.calcguide.tech/2025/08/26/linux开源软件路线图/