01-26-2010
Hi Loic,
thx for your tips - unfortunately "setvbuf(stdout, NULL, _IONBF, 0)" does not solve the problem (I think its the same like a explizit fsync() call). Any other ideas?
Greetz Jens
10 More Discussions You Might Find Interesting
1. UNIX for Advanced & Expert Users
Is there any possibility that a Stream Read and Write queues will interchange messages of any kind. If so what are the different possiblites and under what circumstances ?
Thanks in advance. (4 Replies)
Discussion started by: S.P.Prasad
4 Replies
2. Programming
I am programming some data loader of oracle with unix c, when I find new data file, then read it to database and delete it. but one issue, if the file is in process of creating, not been closed yet. I will read zero or part of data content, this will cause problem. I want to know whether some unix... (2 Replies)
Discussion started by: linkjack
2 Replies
3. UNIX for Dummies Questions & Answers
Hi Everyone,
Good day.
Scenario:
2 unix servers -- A (SunOS) and B (AIX)
I have an ftp script to sftp 30 files from A to B which happen almost instantaneously i.e 30 sftp's happen at the same time.
Some of these sftp's fail with the following error:
ssh_exchange_identification: Connection... (1 Reply)
Discussion started by: jeevan_fimare
1 Replies
4. Programming
Can you help me ?
I want to write a program ,which can open a input file (input.txt) and run as child process ,then write to output file (output.txt).......
char inFile="input.txt";
char outFile="output.txt";
int main(int argc, char **argv)
{
pid_t pid=1;
int no=0; // no. of... (5 Replies)
Discussion started by: cupid1575
5 Replies
5. Shell Programming and Scripting
Hi,
I have file which contains information written in blocks (every block is different). Is it possible to read every block one by one to another file (one block per file).
The input is something like this
<block1>
<empty line>
<block2>
<empty line>
...
...
...
<block25>
<empty... (0 Replies)
Discussion started by: art84_)LV
0 Replies
6. Shell Programming and Scripting
Hi
I used this command:
mplayer http://host/axis-cgi/mjpg/video.cgi -user root -passwd root \
-cache 1024 -fps 25.0 -nosound -vc ffh264 \
-demuxer 3 -dumpstream -dumpfile output.avi It's ok but...
Video Playing is very fast! Why? Is it a synch problem?
What parameter I have to use for... (1 Reply)
Discussion started by: takeo.kikuta
1 Replies
7. UNIX for Dummies Questions & Answers
I'm Unix. I'm looking at "df" on Unix now and below is an example. It's lists the filesystems out in 512-blocks, I need this in 4k blocks. Is there a way to do this in Unix or do I manually convert and how?
So for container 1 there is 7,340,032 in size in 512-blocks. What would the 4k block be... (2 Replies)
Discussion started by: rockycj
2 Replies
8. Shell Programming and Scripting
Hello,
I have a file like this:
FILE.TXT:
(define argc :: int)
(assert ( > argc 1))
(assert ( = argc 1))
<check>
#
(define c :: float)
(assert ( > c 0))
(assert ( = c 0))
<check>
#
now, i want to separate each block('#' is the delimeter), make them separate files, and then send them as... (5 Replies)
Discussion started by: paramad
5 Replies
9. UNIX for Dummies Questions & Answers
I have a script that takes 2 parameters (say) as mandatory
script1.sh a b
The 3rd parameter can be filename which it should process or it can come through a pipeline stream
The script should work both ways:
script1.sh a b filec
or cat filec | script1.sh a b
How to put logic in the... (1 Reply)
Discussion started by: ysrini
1 Replies
10. Shell Programming and Scripting
Hello,
Searched for a while and found some "line-to-column" script. My case is similar but with multiple fields each row:
S02 Length Per
S02 7043 3.864
S02 54477 29.89
S02 104841 57.52
S03 Length Per
S03 1150 0.835
S03 1321 0.96
S03 ... (9 Replies)
Discussion started by: yifangt
9 Replies
SETBUF(3) BSD Library Functions Manual SETBUF(3)
NAME
setbuf, setbuffer, setlinebuf, setvbuf -- stream buffering operations
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <stdio.h>
void
setbuf(FILE *restrict stream, char *restrict buf);
void
setbuffer(FILE *stream, char *buf, int size);
int
setlinebuf(FILE *stream);
int
setvbuf(FILE *restrict stream, char *restrict buf, int type, size_t size);
DESCRIPTION
Three types of buffering are available: unbuffered, block buffered, and line buffered. When an output stream is unbuffered, information
appears on the destination file or terminal as soon as written; when it is block buffered, many characters are saved up and written as a
block; when it is line buffered, characters are saved up until a newline is output or input is read from any stream attached to a terminal
device (typically stdin). The function fflush(3) may be used to force the block out early. (See fclose(3).)
Normally, all files are block buffered. When the first I/O operation occurs on a file, malloc(3) is called and an optimally-sized buffer is
obtained. If a stream refers to a terminal (as stdout normally does), it is line buffered. The standard error stream stderr is always
unbuffered.
The setvbuf() function may be used to alter the buffering behavior of a stream. The type argument must be one of the following three macros:
_IONBF unbuffered
_IOLBF line buffered
_IOFBF fully buffered
The size argument may be given as zero to obtain deferred optimal-size buffer allocation as usual. If it is not zero, then except for
unbuffered files, the buf argument should point to a buffer at least size bytes long; this buffer will be used instead of the current buffer.
If buf is not NULL, it is the caller's responsibility to free(3) this buffer after closing the stream. (If the size argument is not zero but
buf is NULL, a buffer of the given size will be allocated immediately, and released on close. This is an extension to ANSI C; portable code
should use a size of 0 with any NULL buffer.)
The setvbuf() function may be used at any time, but may have peculiar side effects (such as discarding input or flushing output) if the
stream is ``active''. Portable applications should call it only once on any given stream, and before any I/O is performed.
The other three calls are, in effect, simply aliases for calls to setvbuf(). Except for the lack of a return value, the setbuf() function is
exactly equivalent to the call
setvbuf(stream, buf, buf ? _IOFBF : _IONBF, BUFSIZ);
The setbuffer() function is the same, except that the size of the buffer is up to the caller, rather than being determined by the default
BUFSIZ. The setlinebuf() function is exactly equivalent to the call:
setvbuf(stream, (char *)NULL, _IOLBF, 0);
RETURN VALUES
The setvbuf() function returns 0 on success, or EOF if the request cannot be honored (note that the stream is still functional in this case).
The setlinebuf() function returns what the equivalent setvbuf() would have returned.
SEE ALSO
fclose(3), fopen(3), fread(3), malloc(3), printf(3), puts(3)
STANDARDS
The setbuf() and setvbuf() functions conform to ISO/IEC 9899:1990 (``ISO C90'').
BUGS
The setbuffer() and setlinebuf() functions are not portable to versions of BSD before 4.2BSD. On 4.2BSD and 4.3BSD systems, setbuf() always
uses a suboptimal buffer size and should be avoided.
BSD
June 4, 1993 BSD