Bana
Bana

Reputation: 162

C Write() Error in Mac


I'm trying to write characters in a text file on my Macbook Air, but it seems not to be working.
I tried compiling both via Xcode and Terminal.

But the results are same:
File Descripter: 3
write() Error!

Here is the code.

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>

void Error_handling(char* message);

int main() {
    int fd;

    char buf[] = "Let's go! \n";

    fd = open("data.txt", O_CREAT|O_RDONLY|O_TRUNC);
    if (fd == -1)
        Error_handling("open() Error! \n");

    printf("File Descripter: %d \n", fd);

    if(write(fd, buf, sizeof(buf))==-1)
        Error_handling("write() Error! \n");

    close(fd);

    return 0;
}

void Error_handling(char* message)
{
    fputs(message, stderr);
    exit(1);
}

Upvotes: 0

Views: 175

Answers (2)

Magisch
Magisch

Reputation: 7352

Your file is opened in read only mode, which naturally prevents you from writing to it.

fd = open("data.txt", O_CREAT|O_RDONLY|O_TRUNC);
//                            ^ <- Your problem is here

Fix it by using

fd = open("data.txt", O_CREAT|O_WRONLY|O_TRUNC, S_IWRITE);

Upvotes: 3

fghj
fghj

Reputation: 9394

You open file with O_RDONLY and then try to write, of course it reports error.

And as comments suggested the right open variant should be:

fd = open("data.txt", O_CREAT|O_WRONLY|O_TRUNC, 0600);

Upvotes: 5

Related Questions