C shell program

Login or Register to Reply

 
Thread Tools Search this Thread
# 1  
Linux C shell program

1. I've have to write a shell program that accepts Ctrl+T (in linux os in c language) and should print out the current time and date to the screen. I've written the following code but i've to type ^T individual rather than pressing ctrl+T(^T) to get the output. :

2. How do i make the shell program to react when i press ctrl+T without having to press enter. For the following code which i wrote requires me to press enter to execute the command

Code:
#include<stdio.h>
#include<time.h>
#include<unistd.h>
#include<string.h>
#include<unistd.h>
#include<stdlib.h>

int main(void){
		
	time_t t;
	char buffer[100];
	int count;
	
	printf("My Prompt$: ");
	fflush(stdout);
	
	for(;;){
		count = read(0,buffer,99);
		buffer[count] = '\0';
		
		if(strncmp(buffer,"^T",2)==0){
			time(&t);
			printf("%s\n",ctime(&t));
		}
		if(strncmp(buffer,"exit",4)==0){
			exit(0);
		}
		printf("My Promts$ : ");
		fflush(stdout);
	}	
}

Output:
[zorro@localhost Desktop]$ gcc hw8.c
[zorro@localhost Desktop]$ ./a.out
My Prompt$: ^T // have to type ^T
Tue Apr 3 14:47:10 2018

My Promts$ : ^T // when i pressed ctrl+T & have to press enter
My Promts$ : ^T
My Promts$ : exit
[zorro@localhost Desktop]$



4. Assumption University, Bangkok, Thailand, Wanchat.C, CE4207
# 2  
Quote:
Originally Posted by zorro_phu
2. How do i make the shell program to react when i press ctrl+T without having to press enter. For the following code which i wrote requires me to press enter to execute the command
When you read the stdin with read() as you do it you basically read linewise. You have some input field, where you can type and edit some text and you finally press <enter> to submit it - quite the same way you enter commands in the shell.

When you want to intercept single characters you need to use the getch() function or one of its variations (getch(), getchar(), getche()).

I hope this helps.

bakunin
# 3  
In addition to using functions that get characters (rather than lines) from a file, you'll also need to put the input file descriptor into raw (rather than cooked) input mode if you want to read characters from a terminal device without waiting for a full line to be entered. Look at the man pages for tcgetattr(), tcsetattr(), and termios.h to see how to do this.
Login or Register to Reply

|
Thread Tools Search this Thread
Search this Thread:
Advanced Search

More UNIX and Linux Forum Topics You Might Find Helpful
Shell Program , need help!!
raghav1982
Hi all, I am trying to get a file from an ftp server and i have the list of files which needs to be get from the ftp server. grep unix_prg*.* log.txt > log1.txt log1.txt (which has the list of files) 06-29-09 00:00AM 3550258 unix_prg090629 06-28-09 07:00PM ...... Shell Programming and Scripting
7
Shell Programming and Scripting
shell program
nivas
Iam having file 1 as wc -l file1 is 8 QWEERTYUU|7927836357398398398913 yuyuyu uyiuyuyuyuy yuiyuiyuyuyy FDHGFSHAJK|1476887897877777777771 iopwiiwpoi e . . . . I Need to read the abouve line in file1 so iam using the command as tail -n 8...... Shell Programming and Scripting
8
Shell Programming and Scripting
shell program
jyotiardeshana
hello, i have problem in awk filter in shell to concatenate two string plz send me a solution as soon as possible from jyoti ardeshana... Shell Programming and Scripting
4
Shell Programming and Scripting
shell program
rameshparsa
How to write a shell script which takes 3 strings as positional parameters,first and second are file names and third is a directory.if the two files exist in `pwd` and they contain a specific pattern and their size is greater than 32 bytes,moves these files into directory?... Shell Programming and Scripting
1
Shell Programming and Scripting
shell program
nageshrc
Hi guys , As you know normally ' read ' statement waits for the user to press enter and then terminates the input ............. Can anyone of u tell me how do i read a single character from input without waiting for the user to press enter ................ Thanks, Nagesh.... UNIX for Advanced & Expert Users
2
UNIX for Advanced & Expert Users

Featured Tech Videos