You are right, the shell is not to blame here. I was fooled by Solaris 11 Express default PATH having GNU tools first.
On Solaris 10, to get the expected behavior, you can use:
The root cause is stdout is line buffered when the output is a terminal but block buffered when it goes to a pipe or a file. stderr is always line buffered.
Gnu grep is also block buffering stdout in the latter case, but it flushes its standard output stream between each processed file.
---------- Post updated at 14:38 ---------- Previous update was at 11:20 ----------
Quote:
Originally Posted by chronics
less that does not seem to know what is a real newline as opposed to a newline on the console window.
...
grep which incidentally does correctly recognise a newline.
This is unrelated. You might want to start a new thread and elaborate a little bit about these newlines issues.
Here is my problem. I don't know make this redirection thing work. The output file (called output.c) looks like this
#include<stdio.h>
int main()
{
int k;
int m;
print f("%d\n", k);
printf("%d\n", m);
return 0;
}
the input file(called input.c) is this
#include<stdio.h>
int... (2 Replies)
hello all,
I need to create a password change utility for a database. I need to gather at the command line the username, password and database sid. I have the program currently doing this. What I would like to do is not have the new password appear on the screen when I do my read command.... (2 Replies)
Hi,
The code below works, it's a part of a bash shell script that serve to search a pattern $pattern_da_cercare in the files contained in a directory $directory_iniziale.
Now the proble is:
How can I redirect stderr to a file?
PS: so I want to redirect ALL the errors to a file.
I tryed... (9 Replies)
Hi Guys,
I m new to UNIX and new to this forum. Was wondering if someone can help me understand redirection (standard input output pipeline etc)
for starters, not too sure what this would mean
who | sort > sortedfile | pr | lp
im starting to understand common commands but when throwing... (2 Replies)
Hello everyone,I'm reading a book and there's code fragment:
exec 3>&1
ls -l 2>&1 >&3 3>&- | grep bad 3>&-
exec 3>&-
It says that the red part of that code does not close fd 3 but the green does close the fd 3.I can't understand that.....Why?Any predicate will be appreciated.:) (18 Replies)
Hello All,
I am using the below script to gather various tools running by the user, we have more than 100 tools running on the server so my challenge is to redirect memory & cpu load to the file with the name of the tool.so am using the below script i am stucking how to redirect to the file... (2 Replies)
I am trying to write a simple script which prints some output, but also saves the same in a logfile.
echo hello
echo hello >> logfile
Is there anyway i Can write single sentence of code and get the same result:
( i am using CSH ) (4 Replies)
Hi all,
i have been trying to direct o/p of one command to file, but i don get any entries in file but ouptput get displayed on command prompt.
I have tried many options but still , it does not work.
please guide.
here is the command
-bash-3.00$ /usr/local/bin/sudo lpstat -p | grep... (2 Replies)
Discussion started by: manalisharmabe
2 Replies
LEARN ABOUT SUNOS
setbuffer
setbuffer(3C) Standard C Library Functions setbuffer(3C)NAME
setbuffer, setlinebuf - assign buffering to a stream
SYNOPSIS
#include <stdio.h>
void setbuffer(FILE *iop, char *abuf, size_t asize);
int setlinebuf(FILE *iop);
DESCRIPTION
The setbuffer() and setlinebuf() functions assign buffering to a stream. The three types of buffering available are unbuffered, block
buffered, and line buffered. When an output stream is unbuffered, information appears on the destination file or terminal as soon as writ-
ten; when it is block buffered, many characters are saved and written as a block; when it is line buffered, characters are saved until
either a NEWLINE is encountered or input is read from stdin. The fflush(3C) function may be used to force the block out early. Normally all
files are block buffered. A buffer is obtained from malloc(3C) upon the first getc(3C) or putc(3C) performed on the file. If the standard
stream stdout refers to a terminal, it is line buffered. The standard stream stderr is unbuffered by default.
The setbuffer() function can be used after a stream iop has been opened but before it is read or written. It uses the character array abuf
whose size is determined by the asize argument instead of an automatically allocated buffer. If abuf is the null pointer, input/output
will be completely unbuffered. A manifest constant BUFSIZ, defined in the <stdio.h> header, tells how large an array is needed:
char buf[BUFSIZ];
The setlinebuf() function is used to change the buffering on a stream from block buffered or unbuffered to line buffered. Unlike set-
buffer(), it can be used at any time that the stream iop is active.
A stream can be changed from unbuffered or line buffered to block buffered by using freopen(3C). A stream can be changed from block
buffered or line buffered to unbuffered by using freopen(3C) followed by setbuf(3C) with a buffer argument of NULL.
RETURN VALUES
The setlinebuf() function returns no useful value.
SEE ALSO malloc(3C), fclose(3C), fopen(3C), fread(3C), getc(3C), printf(3C), putc(3C), puts(3C), setbuf(3C), setvbuf(3C)NOTES
A common source of error is allocating buffer space as an "automatic" variable in a code block, and then failing to close the stream in the
same block.
SunOS 5.10 13 May 1997 setbuffer(3C)