03-01-2010
When using O_DIRECT on Linux, every block written needs to be properly aligned and the correct size, including the very last one, which is a real difficulty when creating files that don't perfectly match that size.
You're probably having problems with the last block not getting written, and also because you're using fwrite(), which does buffered output. But the buffer is not likely to be properly aligned and could also be smaller than a page size.
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
Is there a way to tell what files/scripts are writing/wrote to a given directory? (3 Replies)
Discussion started by: hattorihanzo
3 Replies
2. UNIX for Dummies Questions & Answers
Hello,
Our group is just starting to get into UNIX here. We are former REXX users on a VM Mainframe. Can someone point me to the documentation to read a file and write a file in a Unix Shell Script or does this have to be done in another language?
Thank you in advance...
Dave (3 Replies)
Discussion started by: tracydp
3 Replies
3. UNIX for Dummies Questions & Answers
thanks guys i managed to answer (0 Replies)
Discussion started by: bebop1111116
0 Replies
4. UNIX for Dummies Questions & Answers
I have a zipped file that is ~ 10GB. I tried tarring it off to a tape, but I receive:
tar: <filename> too large to archive. Use E function modifier.
The file is stored on a UFS mount, so I was unable to use ufsdump.
What other options do I have? (I don't have a local file system large... (3 Replies)
Discussion started by: FredSmith
3 Replies
5. Shell Programming and Scripting
Hey Guys,
I was wondering if someone would give me a hand with an issue I'm having, let me explain the situation:
I have a file that is constantly being written to and read from with updated lines:
# cat activity.file
activity1
activity2
activity3
activity4
activity5
This file... (2 Replies)
Discussion started by: bashshadow1979
2 Replies
6. UNIX for Dummies Questions & Answers
Is there a command in shell-script that I can use that copies a string or writes it to many files? Say I have files a, b and c and I want to copy or write the text "Hallo, I am a newbie!" to all these files? I know I can do echo "Hallo, I am a newbie!" > a but this only copies it to one file. How... (2 Replies)
Discussion started by: #moveon
2 Replies
7. Shell Programming and Scripting
Is there some was to test if opening with the O_DIRECT flag will work (without writing a C program)? (2 Replies)
Discussion started by: brsett
2 Replies
8. Shell Programming and Scripting
Hello:
I have the following code:
----------------------------------
open (OUTPUT_FILE, ">>/usr/users/rovolis/PREPAID/CC/TCG/PP.$cyear$cmonth$cday.txt")||die "$!";
82 open (OUTPUT_FILE2, ">>/usr/users/rovolis/PREPAID/CC/TCG/PR.$cyear$cmonth$cday.txt")||die "$!";
83 # ... (0 Replies)
Discussion started by: chriss_58
0 Replies
9. Shell Programming and Scripting
i've always been of the mind that having to write to disk is very sloppy and dirty. i personally hate this.
so i wonder, is there a way to have a shell script/program write to memory and access whatever it has in memory whenever it wants. pretty much treat memory like hard disk.
can... (2 Replies)
Discussion started by: SkySmart
2 Replies
10. Filesystems, Disks and Memory
I'm trying to understand the difference between o_direct flag of open system call and dax (direct access) with ext4 filesystem.
According to my understanding both bypass page cache.
But I'm still unclear about the crucial difference between these 2 techniques. If there is a huge difference... (1 Reply)
Discussion started by: BHASKAR JUPUDI
1 Replies
LEARN ABOUT HPUX
setvbuf_unl
setbuf(3S) setbuf(3S)
NAME
setbuf(), setvbuf(), setlinebuf() - assign buffering to a stream file
SYNOPSIS
Obsolescent Interface
DESCRIPTION
can be used after a stream has been opened but before it is read or written. It causes the array pointed to by buf to be used instead of
an automatically allocated buffer. If buf is the NULL pointer input/output will be completely unbuffered.
A constant defined in the header file, tells how big an array is needed:
can be used after a stream has been opened but before it is read or written. type determines how stream is to be buffered. Legal values
for type (defined in are:
causes input/output to be fully buffered.
causes output to be line buffered;
the buffer will be flushed when a newline is written, the buffer is full, or input is requested.
causes input/output to be completely unbuffered.
When an output stream is unbuffered, information is queued for writing on the destination file or terminal as soon as written; when it is
buffered, many characters are saved up and written as a block. When the output stream is line-buffered, each line of output is queued for
writing on the destination terminal as soon as the line is completed (that is, as soon as a new-line character is written or terminal input
is requested). can also be used to explicitly write the buffer.
If buf is not the NULL pointer, the array it points to is used for buffering instead of an automatically allocated buffer (from size speci-
fies the size of the buffer to be used. The constant in is suggested as a good buffer size. If input/output is unbuffered, buf and size
are ignored.
By default, output to a terminal is line buffered and all other input/output is fully buffered.
is used to change stream from block-buffered or unbuffered to line-buffered. can be used any time the file descriptor is active.
Obsolescent Interface
assigns buffering to a stream file.
DIAGNOSTICS
If an illegal value for type or size is provided, return a non-zero value. Otherwise, the value returned will be zero.
Note
A common source of error is allocating buffer space as an "automatic" variable in a code block, then failing to close the stream in the
same block.
Allocating a buffer of size or bytes does not necessarily imply that all of size or bytes are used for the buffer area.
AUTHOR
and were developed by HP.
SEE ALSO
flockfile(3S), fopen(3S), getc(3S), malloc(3C), putc(3S), stdio(3S), thread_safety(5), glossary(9).
STANDARDS CONFORMANCE
setbuf(3S)