12-13-2009
read system call reading the same data
Hi,
I wrote a program, to read from a master terminal.
However, the 'read' system call keeps returning the same data endlessly (I expected it to read once and then block).
What will cause t data to be flushed, after 1 read?
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <fcntl.h>
int main()
{
int fd, cfd;
char *path;
char s[20];
memset(s, 0, 20);
fd = open("/dev/ptmx", O_RDWR);
printf("fd is %d\n", fd);
grantpt(fd);
unlockpt(fd);
path = ptsname(fd);
while(read(fd, s, 19)) /* this 'read' reads t same data again n again. I expect it to block after 1 read */
{
printf("Read %d:%s\n", strlen(s), s);
}
return (0);
}
---------- Post updated at 08:19 PM ---------- Previous update was at 08:13 PM ----------
n just to add, i do
echo > /dev/pts/X,
where X corresponds to the slave pts.
its after this that t read goes on infinitely.
---------- Post updated at 09:14 PM ---------- Previous update was at 08:19 PM ----------
sorry guys......... a stupid mistake of not reading t output from 'read' :P
10 More Discussions You Might Find Interesting
1. Programming
When i read 4 bytes from a socket the read function returns 0 value. what does it mean?
How should i know whether a message is available in the socket or not? (1 Reply)
Discussion started by: Madhu Babu
1 Replies
2. Shell Programming and Scripting
Hi All,
I am having trouble through, I am reading the input from tab delimited file containing several records,
e.g.
line1 field1 field2 field3 so on..
line2 field1 field2 field3 so on..
..
..
on the basis of certain fields for each record in input file, I have to retrieve... (1 Reply)
Discussion started by: Sonu4lov
1 Replies
3. UNIX for Advanced & Expert Users
Hi,
Ho do I differentiate system call from library call?
for example if I am using chmod , how do I find out if it is a system call or library call?
Thanks
Muru (2 Replies)
Discussion started by: muru
2 Replies
4. Programming
hi
iam reading data from web page using request socket and curl socket.
now my problem is some the web page containg data as a image so how can i read the data from a image.
thank,inadvance.
sree (3 Replies)
Discussion started by: phani_sree
3 Replies
5. Programming
Hi
I'm studing the system call. I've written a small program that return the time spent in doing some operations. Now I'd like to write one that return the time spent in user mode of a process.
I'm reading that i should use the tms struct:
clock_t times(struct tms *buf);
struct tms {... (2 Replies)
Discussion started by: Dedalus
2 Replies
6. Linux
Hello,
I'm writing a linux driver that reading the data of a page frame of an process. But when I use it, it make immediately freeze the system. Can you help me? Thank for reading my question!
system: Ubuntu 9.04, kernel 2.6.28.15, Intel Duo
static int read_addr(int pid, unsigned long... (2 Replies)
Discussion started by: hahai
2 Replies
7. SCO
After System power get failed
File system is not getting mounted in read- write mode (1 Reply)
Discussion started by: gtkpmbpl
1 Replies
8. UNIX for Advanced & Expert Users
Dear All,
I am having problem with read() system call in Blocking Mode.
In my driver interrupt intimation done through RT FIFO. so i have created the RT FIFO and open the FIFO using open() system call with O_RDONLY flag and i am waiting for interrupt using read() blocking call.initally... (1 Reply)
Discussion started by: rajamohan
1 Replies
9. UNIX for Dummies Questions & Answers
Hello All,
i am a newbie and need some help when reading a csv file in a bourne shell script. I want to read 10 lines, then wait for a minute and then do a reading of another 10 lines and so on in the same way. I want to do this till the end of file.
Any inputs are appreciated
... (3 Replies)
Discussion started by: victor.s
3 Replies
10. Shell Programming and Scripting
hi Guys,
is there a way to pass parameter into oracle store procedure by reading date range in file and increment accordingly. Something like this
file.txt
01-JAN-2015
03-JAN-2015
sqlplus -s user/pwd@DB
execute TEST( to_date( '01-JAN-2015, 'dd.mm.yyyy' ), to_date( '03-JAN-2015', ... (1 Reply)
Discussion started by: rohit_shinez
1 Replies
PTS(4) Linux Programmer's Manual PTS(4)
NAME
ptmx, pts - pseudo-terminal master and slave
DESCRIPTION
The file /dev/ptmx is a character file with major number 5 and minor number 2, usually of mode 0666 and owner.group of root.root. It is
used to create a pseudo-terminal master and slave pair.
When a process opens /dev/ptmx, it gets a file descriptor for a pseudo-terminal master (PTM), and a pseudo-terminal slave (PTS) device is
created in the /dev/pts directory. Each file descriptor obtained by opening /dev/ptmx is an independent PTM with its own associated PTS,
whose path can be found by passing the descriptor to ptsname(3).
Before opening the pseudo-terminal slave, you must pass the master's file descriptor to grantpt(3) and unlockpt(3).
Once both the pseudo-terminal master and slave are open, the slave provides processes with an interface that is identical to that of a real
terminal.
Data written to the slave is presented on the master descriptor as input. Data written to the master is presented to the slave as input.
In practice, pseudo-terminals are used for implementing terminal emulators such as xterm(1), in which data read from the pseudo-terminal
master is interpreted by the application in the same way a real terminal would interpret the data, and for implementing remote-login pro-
grams such as sshd(8), in which data read from the pseudo-terminal master is sent across the network to a client program that is connected
to a terminal or terminal emulator.
Pseudo-terminals can also be used to send input to programs that normally refuse to read input from pipes (such as su(1), and passwd(1)).
FILES
/dev/ptmx, /dev/pts/*
NOTES
The Linux support for the above (known as Unix98 pty naming) is done using the devpts file system, that should be mounted on /dev/pts.
Before this Unix98 scheme, master ptys were called /dev/ptyp0, ... and slave ptys /dev/ttyp0, ... and one needed lots of preallocated
device nodes.
SEE ALSO
getpt(3), grantpt(3), ptsname(3), unlockpt(3), pty(7)
COLOPHON
This page is part of release 3.25 of the Linux man-pages project. A description of the project, and information about reporting bugs, can
be found at http://www.kernel.org/doc/man-pages/.
Linux 2002-10-09 PTS(4)