Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Write Failed: Bad address

Tags:

c

/* Write and rewrite */
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>

int main(int argc,char* argv[]){
 int i = 0;
 int w_rw = 0;
 int fd = -1;
 int bw = -1;
 int nob = 0;
 char* file_name = "myfile";
 char buff[30] = "Dummy File Testing";

 w_rw = 1;       // 1 - write , 2 - rewrite
 nob = 1000000;  // No of bytes to write

 printf("\n File - Create,Open,Write \n");

 for(i = 0; i < w_rw; i++){
        printf("fd:%d line : %d\n",fd,__LINE__);
        if((fd = open(file_name,O_CREAT | O_RDWR))< 0){
                perror("Open failed!");
                return -1;
        }

        printf("fd:%d",fd);
        if((bw = write(fd,buff,nob)) < 0){
                perror("Write failed!");
                return -1;
        }
        printf("\n Bytes written : %d \n",bw);
 }

 return 0;
}

I'm getting a write error, Bad address failure when tried to write 1MB bytes of data. why is that so ?

like image 662
Angus Avatar asked Sep 11 '26 08:09

Angus


1 Answers

According to man of write write() writes up to count bytes from the buffer pointed buf to the file referred to by the file descriptor fd so you are overrunning the string buffer.

If you want to just fill the file with that string try fwrite, you can specify the string length and the total number of times to write the buffer (nob/strlen(buff) ?).

like image 150
Rudolfs Bundulis Avatar answered Sep 14 '26 01:09

Rudolfs Bundulis