[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
writing struct to disk with write()
Hi.
It's nearly 1:30 am and I'm not getting this... When I run this prog,
perror() tells me write() won't write because of a Bad File Descriptor.
open() however succeeds. What am I doing wrong?
--Arsalan.
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <netinet/in.h>
#include <time.h>
#include <syslog.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
struct file_info_struct
{
char username[8];
char password[10];
char filename[256];
long filesize;
time_t timestamp;
};
main()
{
struct file_info_struct file_info;
int fd, ret;
char *msg = "azaidi password file.txt 1024";
memset(&file_info,0,sizeof(file_info));
sscanf(msg, "%s %s %s %d", file_info.username, file_info.password,
file_info.filename, &file_info.filesize);
fd = open("aaa.info", O_APPEND);
printf("error 1 = %d\n", errno);
perror ("after open");
//fd = open("/dev/pts/0",0);
printf("fd = %d\n",fd);
ret = write(fd, &file_info, sizeof(file_info));
printf("write = %d\n",ret);
printf("error 2 = %d\n", errno);
perror("write error");
close(fd);
printf("sizeof = %d\n", sizeof(file_info));
printf("%s %s %s %d", file_info.username, file_info.password,
file_info.filename,file_info.filesize);
}