09-17-2007
maybe this thread should be moevd to programming forum, but if I started this here I wont start another thread for the same pbroblem.
-------------------------------------------------------------------------------------------------------
What am I missing?
What needs to be added to receive SIGINT from serial driver?
#include <termios.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/signal.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#define BAUDRATE B38400
#define MODEMDEVICE "/dev/ttyS0"
#define _POSIX_SOURCE 1 /* POSIX compliant source */
#include <unistd.h>
#include <errno.h>
#include <string.h>
void signal_handler_SIGINT (int status); /* definition of signal handler */
main()
{
int fd,c, res;
struct termios options;
char buf[255];
int pid;
fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY | O_NONBLOCK);
if (fd <0) {perror(MODEMDEVICE); exit(-1); }
signal(SIGINT,signal_handler_SIGINT);
fcntl(fd, F_SETOWN, getpid());
/* Make the file descriptor asynchronous (the manual page says only
O_APPEND and O_NONBLOCK, will work with F_SETFL...) */
fcntl(fd, F_SETFL, FASYNC);
memset (&options, 0x00, sizeof (options));
options.c_cflag |= (CREAD);
options.c_cflag |= CLOCAL;
options.c_cflag |= CS8; // Select 8 l2_data bits
options.c_iflag |= (BRKINT);
// options.c_cc[VMIN] = 1;
options.c_cc[VTIME] = 1;
if(ioctl(fd,TIOCSCTTY, 1) == -1)
printf("eh %s\n",strerror(errno));
}
/***************************************************************************
* signal handler. sets wait_flag to FALSE, to indicate above loop that *
* characters have been received. *
***************************************************************************/
void signal_handler_SIGINT (int status)
{
printf("received SIGINT signal.\n");
exit(0);
}
10 More Discussions You Might Find Interesting
1. Programming
For a program I am designing, which involves handling the keyboard input Ctrl^c (SIGINT), it is taking ages for the program to actually recognise and perform the corresponding action whenever I run it and hit Ctrl^C at the CL. I have to do at least 3 Ctrl^Cs before the program will actually... (3 Replies)
Discussion started by: JamesGoh
3 Replies
2. Solaris
Please note: This solution does require some soldering ability.
If, like me today, you really really need to get into OpenBoot on a non booting Solaris machine (in my case an Ultra 5) but your USB dongle won't send <BREAK> then here is a -really- simple hardware hack that works a treat:
... (0 Replies)
Discussion started by: HideawayStudio
0 Replies
3. Programming
Hi all,
I have this method to read a string from a STDIN:
void readLine(char* inputBuffer){
fgets (inputBuffer, MAX_LINE, stdin);
fflush(stdin);
/* remove '\n' char from string */
if(strlen(inputBuffer) != 0)
inputBuffer = '\0';
}
All work fine but if i... (1 Reply)
Discussion started by: hurricane86
1 Replies
4. Shell Programming and Scripting
I've written a bash script which captures video with DVgrab. Because of the nature of the tapes that I am digitizing, sometimes I want to quit capturing before the time that I set for DVgrab. When this is the case I press Ctrl-c and DVgrab exits cleanly, my problem is that there is additional... (5 Replies)
Discussion started by: Starcast
5 Replies
5. Shell Programming and Scripting
I am having trouble figuring this code
I want to grep a text from a file and if it match certain text it break out of the loop or it should continue searching for the text
Here is what I have written but it isn't working
while true
f=`grep 'END OF STATUS REPORT' filename`
do
if ... (9 Replies)
Discussion started by: Issemael
9 Replies
6. Ubuntu
Hello!
I am working on an application which reads environmental instruments which have serial ports. The application requires a serial port to be present to talk to the device (i.e. /dev/ttyS0 ). In some instances the environmental devices will be 100's of yards away from the computer, so a... (5 Replies)
Discussion started by: mvona
5 Replies
7. Shell Programming and Scripting
Hello,
What I want to accomplish is this:
I have made a very simple script that runs 2 commands, polipo proxy and tor. The script runs successfully and the output of tor is visible to the screen.
I am using the trap command in order to catch the ctrl+c button combo in order to stop polipo... (5 Replies)
Discussion started by: redsolja
5 Replies
8. UNIX for Dummies Questions & Answers
May i know what are the possible causes for SIGINT other than ctrl-c?
Thanks (17 Replies)
Discussion started by: pandeesh
17 Replies
9. Shell Programming and Scripting
The following command will run and wait for input from the user.
/usr/sap/SAP/webdisp/wdispmon pf=/usr/sap/SAP/webdisp/profile
What I would like to do is (in one command):
- Add the above line to a ksh script
- Receive the output
- and send a SIGINT
I have seen many posts on how to... (3 Replies)
Discussion started by: sapsid
3 Replies
10. Shell Programming and Scripting
I need a script to keep polling "receive_dir" directory till "stopfile" get written in the directory.
This has to run despite empty directory.
So far i have this but fails if receive_dir is empty with no files with "unary operator expected". Help !!
#!/usr/bin/ksh
until
do
for i... (1 Reply)
Discussion started by: iaav
1 Replies
LEARN ABOUT HPUX
tcgetsid
tcgetsid(3C) tcgetsid(3C)
NAME
tcgetsid() - get terminal session ID
SYNOPSIS
DESCRIPTION
The function returns the value of the session ID of the foreground process associated with the terminal referenced by fildes. is allowed
from a process that is a member of a background process group (see termio(7)).
RETURN VALUE
Upon successful completion, returns the value of the session ID of the foreground process associated with the terminal referenced by
fildes. Otherwise, returns a value of and sets to indicate the error.
ERRORS
If the function fails, it sets (see errno(2)) to one of the following values:
[EACCES] The file associated with fildes is the controlling terminal of the calling process; however, there is no foreground
process group defined for the controlling terminal.
[EBADF] fildes is not a valid file descriptor.
[ENOTTY] The file associated with fildes is not the controlling terminal or the calling process does not have a controlling
terminal.
SEE ALSO
getsid(2), setsid(2), tcgetpgrp(3C), thread_safety(5).
tcgetsid(3C)