Sponsored Content
Full Discussion: How to skip getchar in C?
Top Forums Programming How to skip getchar in C? Post 302458772 by Corona688 on Friday 1st of October 2010 05:31:46 PM
Old 10-01-2010
You can't do this with getchar(), you'll have to use read() instead. More details in a bit.

---------- Post updated at 03:31 PM ---------- Previous update was at 03:19 PM ----------

This should timeout at 5 seconds. The timeout happens in the terminal itself.

Code:
#include <stdio.h>
#include <unistd.h>

int main(void)
{
        int c;
        // Save sane TTY settings
        system("stty -g > ~/.stty-save");
        // Set TTY timeout of 50 tenths of a second, minimum read size 0
        system("stty -icanon min 0 time 50");

        while(read(STDIN_FILENO, &c, 1) == 1)
        {
                fprintf(stderr, "read 1 bytes\n");
        }

        // Restore sane tty settings
        system("stty $(cat ~/.stty-save)");
        return(0);
}

This User Gave Thanks to Corona688 For This Post:
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

getchar()

hey everyone! got another problem here. how would i use the getchar() in a prompt: Press any key to continue the way i did it was to define a char variable named ch and then wrotechar ch ... ch = getchar(); printf("Press any key to continue"); getchar():if you press enter it exits, but... (2 Replies)
Discussion started by: primal
2 Replies

2. BSD

FreeBSD skip UserConfig...

When I boot FreeBSD from cd/floppy, it skips the UserConfig program. I have no idea why! And if I skip this step, my hardware won't work. ( I already tried...) Can anyone help me with this??? (2 Replies)
Discussion started by: Enoch Chan
2 Replies

3. Shell Programming and Scripting

Skip new line

Hi, how can I skip the new line of echo? In SH!!!! echo "the date is :" date and result I want is the date is : Tue Oct 11 22:24:37 WEST 2005 I've already tried including the \c inside the echo, but it didn't work. Thanks! (2 Replies)
Discussion started by: pmpx
2 Replies

4. Shell Programming and Scripting

Bash replacement to getchar

There's a replacement in bash for getchar or get functions of C and C++?Those functions read the next char avaliable in the input stream. I've tried something like: OLD_STTY=`stty -g` stty cbreak -echo look=`dd if=/dev/tty bs=1 count=1 2>/dev/null` stty $OLD_STTY But it is not working... (3 Replies)
Discussion started by: Asafe
3 Replies

5. Shell Programming and Scripting

go to / skip in script

Hi all I have some script like this #!/bin/bash mv /tmp/file1 tmp/file2 if ] ; then cp /tmp/filetest/ tmp/file3 if ] then echo "succes" else echo "failed" fi else echo "failed" fi i didn't try to see if it's work, the thing is that i don't care if... (4 Replies)
Discussion started by: naamas03
4 Replies

6. Programming

Help on getchar

I wanted to make a simple program that writes chracters in a file but i didnt want to press enter .So i found the getchar which doesnt need enter.If i pass (int) getchar to putc ,in the file it shows a P character.The (int) getchar says it is equal to1734747216 so i do (int) getchar-1734747216... (4 Replies)
Discussion started by: fireblast
4 Replies

7. Programming

How to kill disowned process which calls getchar() in code

Hi, What happens to process state when getchar() is called? I wrote a C code in which I call getchar() somewhere down the road. I forgot about that, I started the process, put it in bg and disowned it using "disown". Now, how do I see where that process has gone/how do kill it? Thanks, Amrut (1 Reply)
Discussion started by: 17amrut29
1 Replies

8. UNIX for Advanced & Expert Users

Skip files in use

Hi all, i'm trying to configure a script that will find and gzip the searched files, this is easy enough, find /var/log/myfolder/*.log -type f -mtime +1 -exec gzip {} \; cd /var/log/myfolder/ mv *gz myzipped_folder/ but what it would be very handy is to skip the files in use,because tomcat... (13 Replies)
Discussion started by: charli1
13 Replies

9. Programming

What is the difference between printf and putchar() or scanf and getchar() ?

Im a newbie to programming language, i found tat there r these function called printf and putchar() as well as scanf and getchar(), im curious abt why do dey hav these 2 different function although dey r doing the same instruction? :confused: (13 Replies)
Discussion started by: kris26
13 Replies

10. Shell Programming and Scripting

Skip first and last line

Hi All I have a sample file like below: 012312112 1372422843 1236712 1372422843 1275127 3109301010 from which I wan't to: 1.)delete... (10 Replies)
Discussion started by: swasid
10 Replies
IO::Stty(3)						User Contributed Perl Documentation					       IO::Stty(3)

NAME
Change and print terminal line settings SYNOPSIS
# calling the script directly stty.pl [setting...] stty.pl {-a,-g,-v,--version} # Calling Stty module use IO::Stty; IO::Stty::stty(*TTYHANDLE, @modes); use IO::Stty; $old_mode=IO::Stty::stty(*STDIN,'-g'); # Turn off echoing. IO::Stty::stty(*STDIN,'-echo'); # Do whatever.. grab input maybe? $read_password = <>; # Now restore the old mode. IO::Stty::stty(*STDIN,$old_mode); # What settings do we have anyway? print IO::Stty::stty(*STDIN,'-a'); DESCRIPTION
This is the PERL POSIX compliant stty. INTRO
This has not been tailored to the IO::File stuff but will work with it as indicated. Before you go futzing with term parameters it's a good idea to grab the current settings and restore them when you finish. stty accepts the following non-option arguments that change aspects of the terminal line operation. A `[-]' before a capability means that it can be turned off by preceding it with a `-'. stty parameters Control settings [-]parenb Generate parity bit in output and expect parity bit in input. [-]parodd Set odd parity (even with `-'). cs5 cs6 cs7 cs8 Set character size to 5, 6, 7, or 8 bits. [-]hupcl [-]hup Send a hangup signal when the last process closes the tty. [-]cstopb Use two stop bits per character (one with `-'). [-]cread Allow input to be received. [-]clocal Disable modem control signals. Input settings [-]ignbrk Ignore break characters. [-]brkint Breaks cause an interrupt signal. [-]ignpar Ignore characters with parity errors. [-]parmrk Mark parity errors (with a 255-0-character sequence). [-]inpck Enable input parity checking. [-]istrip Clear high (8th) bit of input characters. [-]inlcr Translate newline to carriage return. [-]igncr Ignore carriage return. [-]icrnl Translate carriage return to newline. [-]ixon Enable XON/XOFF flow control. [-]ixoff Enable sending of stop character when the system input buffer is almost full, and start character when it becomes almost empty again. Output settings [-]opost Postprocess output. Local settings [-]isig Enable interrupt, quit, and suspend special characters. [-]icanon Enable erase, kill, werase, and rprnt special characters. [-]echo Echo input characters. [-]echoe, [-]crterase Echo erase characters as backspace-space-backspace. [-]echok Echo a newline after a kill character. [-]echonl Echo newline even if not echoing other characters. [-]noflsh Disable flushing after interrupt and quit special characters. * Though this claims non-posixhood it is supported by the perl POSIX.pm. [-]tostop (np) Stop background jobs that try to write to the terminal. Combination settings ek Reset the erase and kill special characters to their default values. sane Same as: cread -ignbrk brkint -inlcr -igncr icrnl -ixoff opost isig icanon echo echoe echok -echonl -noflsh -tostop also sets all special characters to their default values. [-]cooked Same as: brkint ignpar istrip icrnl ixon opost isig icanon plus sets the eof and eol characters to their default values if they are the same as the min and time characters. With `-', same as raw. [-]raw Same as: -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -opost -isig -icanon min 1 time 0 With `-', same as cooked. [-]pass8 Same as: -parenb -istrip cs8 With `-', same as parenb istrip cs7. dec Same as: echoe echoctl echoke -ixany Also sets the interrupt special character to Ctrl-C, erase to Del, and kill to Ctrl-U. Special characters The special characters' default values vary from system to system. They are set with the syntax `name value', where the names are listed below and the value can be given either literally, in hat notation (`^c'), or as an integer which may start with `0x' to indicate hexadecimal, `0' to indicate octal, or any other digit to indicate decimal. Giving a value of `^-' or `undef' disables that special character. intr Send an interrupt signal. quit Send a quit signal. erase Erase the last character typed. kill Erase the current line. eof Send an end of file (terminate the input). eol End the line. start Restart the output after stopping it. stop Stop the output. susp Send a terminal stop signal. Special settings min N Set the minimum number of characters that will satisfy a read until the time value has expired, when <E>-icanon<E> is set. time N Set the number of tenths of a second before reads time out if the min number of characters have not been read, when -icanon is set. N Set the input and output speeds to N. N can be one of: 0 50 75 110 134 134.5 150 200 300 600 1200 1800 2400 4800 9600 19200 38400 exta extb. exta is the same as 19200; extb is the same as 38400. 0 hangs up the line if -clocal is set. OPTIONS -a Print all current settings in human-readable form. -g Print all current settings in a form that can be used as an argument to another stty command to restore the current settings. -v,--version Print version info. Direct Subroutines stty() IO::Stty::stty(*STDIN, @params); From comments: I'm not feeling very inspired about this. Terminal parameters are obscure and boring. Basically what this will do is get the current setting, take the parameters, modify the setting and write it back. Zzzz. This is not especially efficent and probably not too fast. Assuming the POSIX spec has been implemented properly it should mostly work. show_me_the_crap() Needs documentation AUTHOR
Austin Schutz <auschutz@cpan.org> (Initial version and maintenance) Todd Rinaldo <toddr@cpan.org> (Maintenance) BUGS
This is use at your own risk software. Do anything you want with it except blame me for it blowing up your machine because it's full of bugs. See above for what functions are supported. It's mostly standard POSIX stuff. If any of the settings are wrong and you actually know what some of these extremely arcane settings (like what 'sane' should be in POSIX land) really should be, please open an RT ticket. ACKNOWLEDGEMENTS
None COPYRIGHT &; LICENSE Copyright 1997 Austin Schutz, all rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.18.2 2017-10-06 IO::Stty(3)
All times are GMT -4. The time now is 05:56 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy