saravanaraj v wrote: > I am facing few issues in reading from a character device. > I have created few character devices using 'mknod' and I am writing > continuously to those devices using 'printk'. After some time I start > another process to read from the device. The open/read is done using > normal sys calls for file open/reading. I have pasted the code for > your ref. When I run this program the read happens for some time and > then there is no progress. I am suspecting that everything written to > the device before this program was started is read. The flags I tried > for opening the file were RD, RDWR with/without NONBLOCK. The output > was same in all the cases. I tried "cu -l /dev/virt_uart8". It was > able to read continuosuly without any problem. Can someone tell where > the problem is ? > > int main(){ > > int fd,counter=0; > fd = open("/dev/virt_uart8",O_RDONLY|O_NONBLOCK); > if(fd<0) printf("\nError in opeining file"); > while(1){ > > int nread = 0; > nread = read(fd,buffer,MAX_BUFFER_SIZE-1); > if(nread>0) { > buffer[nread]='\0'; > printf("%s",buffer); > } If you want to print data which doesn't necessarily have a trailing newline, you need fflush(stdout) or setvbuf(stdout, NULL, _IONBF, 0). If you make that change and still have problems, it's likely to be an issue with the device. E.g. you may need to disable XON/XOFF processing with tcsetattr(), or put the device into raw mode. -- Glynn Clements <glynn@xxxxxxxxxxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html