如何使用 sprintf() 和 write() 生成具有适当权限的文件?

如何使用 sprintf() 和 write() 生成具有适当权限的文件?
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/stat.h>


void main(){
    char tmp[12]={0x0};
    int i=13;
    sprintf(tmp,"%11d", i);
    int fd = open("transaction.txt", O_CREAT | O_RDWR);
    write(fd, tmp, sizeof(tmp));
}

我正在尝试将整数写入文件。
因为 linux 不提供 itoa 函数,所以我必须尝试使用打印.
但我无法读取结果文件。

创建的文件归我所有,但具有权限------xr-x。这意味着我的用户无法读取或写入该文件,我的组根本没有访问权限,但奇怪的是其他用户可以读取它。

transaction.txt 属性

如果我运行,该文件是可读的,sudo cat transaction.txt并且13符合预期。

我如何生成具有适当权限的文件以便可以使用。

答案1

添加行

int fd;

并对公开招募进行如下修改:

fd = open("transaction.txt", O_CREAT | O_WRONLY, 00644);

相关内容