Adicione a linha
int fd;
e modifique a chamada em aberto da seguinte forma:
fd = open("transaction.txt", O_CREAT | O_WRONLY, 00644);
#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));
}
Estou tentando escrever inteiros em um arquivo.
porque o linux não oferece itoa função, eu tenho que tentar usar sprintf .
mas não consigo ler o arquivo de resultados.
O arquivo criado é de minha propriedade, mas tem permissões ------xr-x
. Isso significa que meu usuário não pode ler ou gravar o arquivo e meu grupo não tem acesso, mas estranhamente outros usuários podem lê-lo.
O arquivo é legível se eu executar sudo cat transaction.txt
, o que dá 13
como esperado.
Como posso gerar um arquivo com permissões adequadas para que seja utilizável.
Adicione a linha
int fd;
e modifique a chamada em aberto da seguinte forma:
fd = open("transaction.txt", O_CREAT | O_WRONLY, 00644);