Sponsored Content
Top Forums Programming How to programm TTY devices under UNIX platform? Post 12226 by Perderabo on Friday 21st of December 2001 10:57:43 AM
Old 12-21-2001
There is the old unix way to do this and the new posix way. I wrote a program to put the tty into raw mode using both methods so I could compare them. You should probably understand both techniques since there is a lot of old code out there. But I think the posix revision is a win, so I would suggest going the posix route with new code. I would add the following man pages to your list:

tcattribute(3c)
cfspeed(3C)
tccontrol(3C)

You should use the routines in cfspeed(3C) to change the baud rate.

Here is the sample program that I wrote:
Code:
/*   #define OLD_TERMIO  */

#ifdef __STDC__
#define PROTOTYPICAL
#endif
#ifdef __cplusplus
#define PROTOTYPICAL
#endif

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#ifdef OLD_TERMIO
#include <termio.h>
#else
#include <termios.h>
#endif

#ifdef PROTOTYPICAL
int main(int argc, char *argv[])
#else
main(argc,argv)
char *argv[];
#endif

{
#ifdef OLD_TERMIO
        struct termio orig,now;
#else
        struct termios orig,now;
#endif
        int c, i, rc, done;
        setvbuf(stdout, NULL, _IONBF ,0);

#ifdef OLD_TERMIO
        ioctl(0, TCGETA, (char *) &orig);
#else
        tcgetattr(0, &orig);
#endif
        now=orig;
        now.c_lflag &= ~(ISIG|ICANON|ECHO);
        now.c_cc[VMIN]=1;
        now.c_cc[VTIME]=2;
#ifdef OLD_TERMIO
        ioctl(0,TCSETA, (char *) &now);
#else
        tcsetattr(0, TCSANOW, &now);
#endif
        done=0;
        while(!done) {
                printf("hit a key: ");
                c=getchar();
                printf(" got a  %03X \n", c);
                done = c=='q';
        }
#ifdef OLD_TERMIO
        ioctl(0,TCSETA, (char *) &orig);
#else
        tcsetattr(0, TCSANOW, &orig);
#endif
        exit(0);
}


Last edited by Perderabo; 01-16-2005 at 02:48 PM.. Reason: remove html which is no longer supported
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

UNIX problem? Unix programm runs windows 2000 CPU over 100%

Okee problems...!! What is happening: Unix server with some programms, workstations are windows 2000, the workstations work good but when you start a programm on the Unix server the CPU of the workstations go to 100% usage resulting that the system gets very slow. The programm well its running so... (2 Replies)
Discussion started by: zerocool
2 Replies

2. UNIX for Advanced & Expert Users

Porting of Windows written unix scripts to unix platform

Can anybody help me in finding out a solution for the problem below? When we write .unix or .sh files in windows OS and port them to Unix platforms there is a character ^M inserted at the end of each line of the script file. During ftp porting I set the transfer mode as ASCII for the script... (7 Replies)
Discussion started by: tamilselvi
7 Replies

3. Programming

how do i run am encrpyrtic programm on unix

how do i run am encrpyrtic programm on unix, (4 Replies)
Discussion started by: ghoz
4 Replies

4. Shell Programming and Scripting

How to embeded programm within programm

Hi, How to embeded programme within perl programme. Shankarao (2 Replies)
Discussion started by: shankarao
2 Replies

5. AIX

Difference between tty and console devices ?

Hi, What is the diference between these two ? thanks Vilius (3 Replies)
Discussion started by: vilius
3 Replies

6. UNIX for Advanced & Expert Users

How can I remotely take unix/linux tty control!?

Hello everyone!. I am wondering if it is possible to take control of a tty session???!!!. For example: imagine you are running a command in a unix server that will take 12 hours to compleate... now, imagine you are at your home and you want to check how the command is performing or if errors... (2 Replies)
Discussion started by: dragonov7
2 Replies

7. UNIX for Dummies Questions & Answers

What are pseudo-tty devices? Is my /etc/securetty file contains any?

Hi , I have searched wiki for pseudo tty devices but it was very complex for me to understand. Can any one help me understanding concept behind pseudo-tty in layman language? According to security manual of our org /etc/securetty files shouldn't have any pseudo tty devices. i understand ttyX... (5 Replies)
Discussion started by: pinga123
5 Replies

8. Shell Programming and Scripting

unix shell programm(need urgent Help)

Hi guys, i am new to shell can u please explain how to get those two outputs in temp1 i have i/p like abcd edk lkg jkl loop i need o/p abcd ********* edk********** lkg *********** jkl *********** loop************ need o/p abcd *************** (2 Replies)
Discussion started by: ashokkrishna063
2 Replies

9. Shell Programming and Scripting

Request to checkVenn diagram issue solve by Unix programm

Hello Any Unix programm can help me to solve thsi issue: I have 2 venn digrams please checke the attached file for pictures of venn diagram for eg red is A yellow is B and green is C..Please see attached file for Venn diagrams In one ..... I have 3 data set A , B and C Venn diagram... (0 Replies)
Discussion started by: manigrover
0 Replies

10. Shell Programming and Scripting

Python: Redirecting to tty and reading from tty

In bash, you can do something like this: #!/bin/bash echo -n "What is your name? " > /dev/tty read thename < /dev/tty How can I do the same in python? I have a python script that has the following content: #!/usr/bin/python2.7 import getpass import sys import telnetlib import... (2 Replies)
Discussion started by: SkySmart
2 Replies
vec(2rheolef)                                                       rheolef-6.1                                                      vec(2rheolef)

NAME
vec - vector in distributed environment (rheolef-6.1) SYNOPSYS
STL-like vector container for a sequential or distributed memory machine model. Additional operation fom classical algebra. EXAMPLE
A sample usage of the class is: int main(int argc, char**argv) { environment distributed(argc, argv); vec<double> x(100, 3.14); dout << x << endl; } IMPLEMENTATION NOTE
Implementation use array<T,M>. IMPLEMENTATION
template <class T, class M = rheo_default_memory_model> class vec : public array<T, M> { public: // typedef: typedef array<T, M> base; typedef typename base::size_type size_type; typedef std::ptrdiff_t difference_type; #ifdef TODO // pb compile avec boost sur foehn: typedef typename base::difference_type difference_type; #endif // TODO typedef basic_range<size_type, difference_type> range_type; typedef typename base::reference reference; typedef typename base::const_reference const_reference; typedef typename base::iterator iterator; typedef typename base::const_iterator const_iterator; // allocator/deallocator: vec (const distributor& ownership, const T& init_val = std::numeric_limits<T>::max()); vec(size_type dis_size = 0, const T& init_val = std::numeric_limits<T>::max()); void resize ( const distributor& ownership, const T& init_val = std::numeric_limits<T>::max()); void resize ( size_type size = 0, const T& init_val = std::numeric_limits<T>::max()); // accessors: const_reference operator[] (size_type i) const; reference operator[] (size_type i); T max_abs () const; // range: vec(const vec_range<T,M>& vr); vec(const vec_range_const<T,M>& vr); vec<T,M>& operator= (const vec_range<T,M>& vr); vec<T,M>& operator= (const vec_range_const<T,M>& vr); vec_range_const<T,M> operator[] (const range_type& r) const; vec_range<T,M> operator[] (const range_type& r); // assignment to a constant: vec<T,M>& operator= (const int& expr); vec<T,M>& operator= (const T& expr); // expression template: template<typename Expr> vec (const Expr& expr); template<typename Expr> vec<T,M>& operator= (const vec_expr<Expr>& expr); template<typename Expr> vec<T,M>& operator+= (const Expr& expr); template<typename Expr> vec<T,M>& operator-= (const Expr& expr); // initializer list (c++ 2011): #ifdef _RHEOLEF_HAVE_STD_INITIALIZER_LIST vec (const std::initializer_list<vec_concat_value<T,M> >& init_list); vec<T,M>& operator= (const std::initializer_list<vec_concat_value<T,M> >& init_list); #endif // _RHEOLEF_HAVE_STD_INITIALIZER_LIST }; rheolef-6.1 rheolef-6.1 vec(2rheolef)
All times are GMT -4. The time now is 09:31 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy