10-01-2008
Quote:
Originally Posted by
Perderabo
If you select on a terminal and I am typing on it, select returns on the first character. If you then do a blocking read for 10 characters, you will block until I type nine more. I really can't imagine any alternative behavior.
I use read(), not fread(). read() could for example only return 1 byte. As all available docs say, that read() *can* return less bytes then requested. So the return value of the read() call in your case would be 1 (in my optinion). Then a program would decide to either
- Wait for the rest, by calling read() again, this time requesting the 9 bytes missing
- call select() again, to be notified, when you press your next key
10 More Discussions You Might Find Interesting
1. Programming
Hi,
Could you please tell me how can I know which position a given read descriptor ocuppies in the descriptors table.
I know that, for instance, 'stdin' ocuppies position ... what about the others descriptors that I create usings pipes or sockets??
Thanks!
P.S.: Sorry for my bad English (2 Replies)
Discussion started by: jnuno
2 Replies
2. Programming
How can 'popen()' be used for reading and writing to opening pipe?
If i try 'popen("prog", "rw")'
and then put and get chars - it does
not work.
What is wrong? (1 Reply)
Discussion started by: szzz
1 Replies
3. Shell Programming and Scripting
I have tried to show the file name whose size is greater than 200 byte in current directory.
Please help me.
ls -l | tr -s " " " " | cut -f 5,9 -d " " >out.txt
#set -a x `cat out.txt`
i=0
`cat out.txt` | while
do
read x
echo $x
#re=200
j=0
if }" < "200" ]
then
echo $j
j=`expr $j... (2 Replies)
Discussion started by: rinku
2 Replies
4. UNIX Desktop Questions & Answers
OK... I'm fairly new to unix having the admin handed to me on a platter w/almost no training.
However, being a programmer, I do pick up things fairly easily, but this one is getting the best of me.
I have a unix server that runs multiple versions of the same ERP system, hand crafted for our... (1 Reply)
Discussion started by: chimodel
1 Replies
5. Shell Programming and Scripting
I need to find all the files that have group Read or Write permission or files that have user write permission.
This is what I have so far:
find . -exec ls -l {} \; | awk '/-...rw..w./ {print $1 " " $3 " " $4 " " $9}'
It shows me all files where group read = true, group write = true... (5 Replies)
Discussion started by: shunter63
5 Replies
6. IP Networking
Hi,
We have smb client running on two of the linux boxes and smb server on another linux system. During a backup operation which uses smb, read of a file was allowed while write to the same file was going on.Also simultaneous writes to the same file were allowed.Following are the settings in the... (1 Reply)
Discussion started by: swatidas11
1 Replies
7. IP Networking
hi
am newbie to unix and socket programing
I am trying to figuring out syntax for read and write
to send data from server to client and client can read it
I have to send two integers
write(newsockfd,buffer,"%d %d",x,y,0) writing from client where x and y are two integers..
... (7 Replies)
Discussion started by: karthik1238
7 Replies
8. Shell Programming and Scripting
Hello Guys, How all are doing?
I have an issue in Unix and want help from all of you
I have a file in UNIX which it read by line by line , If at the end of line '0' is written the it should fetch that line into another file and change '0' to '1'
and If at the end of line '1' is written then it... (10 Replies)
Discussion started by: adisky123
10 Replies
9. Programming
Can someone help me to write this program in C in QNX?
Using the FIFO queues write a simple communication system consisting of programs write and read. The program write the parameters given strings enclosed in single quotes. These strings are written to the FIFO file. Reads the program read... (1 Reply)
Discussion started by: ebasse2
1 Replies
10. Shell Programming and Scripting
In the bash below the oldest folder in a directory is selected. If there are 3folders in the directory /home/cmccabe/Desktop/NGS/test and nothing is done to them (ie. no files deleted, renamed) then the bash correctly identifies f1 as the oldest. However, if something is done to the folder then... (4 Replies)
Discussion started by: cmccabe
4 Replies
LEARN ABOUT REDHAT
bio_write
BIO_read(3) OpenSSL BIO_read(3)
NAME
BIO_read, BIO_write, BIO_gets, BIO_puts - BIO I/O functions
SYNOPSIS
#include <openssl/bio.h>
int BIO_read(BIO *b, void *buf, int len);
int BIO_gets(BIO *b,char *buf, int size);
int BIO_write(BIO *b, const void *buf, int len);
int BIO_puts(BIO *b,const char *buf);
DESCRIPTION
BIO_read() attempts to read len bytes from BIO b and places the data in buf.
BIO_gets() performs the BIOs "gets" operation and places the data in buf. Usually this operation will attempt to read a line of data from
the BIO of maximum length len. There are exceptions to this however, for example BIO_gets() on a digest BIO will calculate and return the
digest and other BIOs may not support BIO_gets() at all.
BIO_write() attempts to write len bytes from buf to BIO b.
BIO_puts() attempts to write a null terminated string buf to BIO b
RETURN VALUES
All these functions return either the amount of data successfully read or written (if the return value is positive) or that no data was
successfully read or written if the result is 0 or -1. If the return value is -2 then the operation is not implemented in the specific BIO
type.
NOTES
A 0 or -1 return is not necessarily an indication of an error. In particular when the source/sink is non-blocking or of a certain type it
may merely be an indication that no data is currently available and that the application should retry the operation later.
One technique sometimes used with blocking sockets is to use a system call (such as select(), poll() or equivalent) to determine when data
is available and then call read() to read the data. The equivalent with BIOs (that is call select() on the underlying I/O structure and
then call BIO_read() to read the data) should not be used because a single call to BIO_read() can cause several reads (and writes in the
case of SSL BIOs) on the underlying I/O structure and may block as a result. Instead select() (or equivalent) should be combined with non
blocking I/O so successive reads will request a retry instead of blocking.
See BIO_should_retry(3) for details of how to determine the cause of a retry and other I/O issues.
If the BIO_gets() function is not supported by a BIO then it possible to work around this by adding a buffering BIO BIO_f_buffer(3) to the
chain.
SEE ALSO
BIO_should_retry(3)
TBA
0.9.7a 2000-09-16 BIO_read(3)