C shell program

 
Thread Tools Search this Thread
Homework and Emergencies Homework & Coursework Questions C shell program
# 1  
Old 04-03-2018
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  
Old 04-03-2018
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  
Old 04-03-2018
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 Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Homework & Coursework Questions

Shell program in C

Hi all, I have an assignment from school to write a shell program in linux. the idea is to exercise fork() and execv() functions.. the shell program is supposed to be the master and every command that the user prints will run in a new process. we also need to try running the command in every... (1 Reply)
Discussion started by: r3vive
1 Replies

2. Shell Programming and Scripting

Shell Program , need help!!

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 ... (7 Replies)
Discussion started by: raghav1982
7 Replies

3. Shell Programming and Scripting

shell program

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... (8 Replies)
Discussion started by: nivas
8 Replies

4. Shell Programming and Scripting

help with shell program

I want to print the value of variables a1, a2, a3 in for loop in the following program: a1=this a2=is a3=printed for((i=1;i<4;i++)) do var=a$i #w=`echo $var` e=${var} echo $e done But actually I get a1,a2,a3 as the output not the "this is printed" So the main question is if I... (3 Replies)
Discussion started by: adgarg
3 Replies

5. Shell Programming and Scripting

very first shell program.

in the beginners book i have it gives an exercise to try. saying to make a script that examines the time. it should keep examining every second or so and say some sort of message. Can anyone help me get going. Thanks (3 Replies)
Discussion started by: bebop1111116
3 Replies

6. Shell Programming and Scripting

shell program

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 (4 Replies)
Discussion started by: jyotiardeshana
4 Replies

7. Shell Programming and Scripting

shell program

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? (1 Reply)
Discussion started by: rameshparsa
1 Replies

8. Programming

Shell Program

I am programming the following simple shell program. It works for the most part, things like 'ls' and 'ps' work just fine. However when I add options, (example, ls -l) it does not execute the command. Also, I've been trying to add an "exit" command, so that I don't have to use the iterrupt; but... (3 Replies)
Discussion started by: TexasGuy
3 Replies

9. Shell Programming and Scripting

C shell Program

Hellow every body I am trying to write a very simple script in an executable file as following if ($?PWD) then echo "OK" else echo "No" endif but I am getting error during execution in c shell as synthax error at line 4 , unexpected end of file Please advise (2 Replies)
Discussion started by: Reza Nazarian
2 Replies

10. Shell Programming and Scripting

Help me with this Shell Program

Now, am in a very tight situation here. I really dont expect anyone to understand but please, try your best. am trying to right a program that goes back to the previous entry to correct a mistake. heres what am trying to do. i write a program like this Name : James Holgston... (1 Reply)
Discussion started by: TRUEST
1 Replies
Login or Register to Ask a Question