Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using the open() system call

Tags:

c

file

unix

I'm writing a program that writes output to a file. If this file doesn't exist, I want to create it.

Currently, I'm using the following flags when calling open: O_WRONLY | O_CREATE

However, when this creates the file, it doesn't give me any permissions to write to it...

How can I use open so that it creates a file if it doesn't exist, but will create it with necessary permissions when needed?

Thanks!

like image 511
samoz Avatar asked Feb 27 '09 19:02

samoz


2 Answers

You probably need the third argument. For example:

open('path',O_WRONLY|O_CREAT,0640);
like image 132
Randy Proctor Avatar answered Sep 25 '22 02:09

Randy Proctor


Just use the optional third argument to open:

int open(const char* pathname, int flags, mode_t mode);

so like this:

open("blahblah", O_CREAT | O_WRONLY, S_IRUSR | S_IWUSER | S_IRGRP | S_IROTH);

See man open(2).

like image 20
David Z Avatar answered Sep 21 '22 02:09

David Z