Programming :: Designing A Signal Handler With Sigwait In UNIX?
Jan 20, 2010
I'm new to Unix and every signal handler algorithm I've seen is more or less a copy of what I'm trying to do.[URL] designing a signal handler with sigwait in UNIX?
Is it possible to connect a signal handler to a variable?So when the variable changes the signal handler is called.I have a vector containing strings which i want to parse when there are one or more available strings in the vector
Basically I'm intending to write serial RX signal handler.Application receives defined packages of data over serial which contains header and payload. Handler should analyse incoming stream and upon detection of header (header is 6B in length) switches to receive payload of length defined in header, then after receiving full message packs it and sends to application for handling.Problem I'm facing is that at random moments in signal I receive errors that "Resource temporarily unavailable" while reading from ttyOx device and I see that sometimes I miss incoming data.Also is it possible that if while I'm handling signal one more signal arrives and it is started to be handled parallel? If it is, what are the ways to prevent it? So I would be sure that no more signals will fire on same peripheral until I will finish handling what I have on my hands now.
Serial open and init: Code: Select allint open_port(int port_nr) { int fd; /* File descriptor for the port */ switch (port_nr) { case 1: fd = open("/dev/ttyO1", O_RDWR | O_NOCTTY | O_NDELAY); break;
locking mutex (phtread_t type) in a signal handler function (installed by function signal()) for Linux. It seems that if the mutex has been previously locked by another thread outside the signal handler function and then the signal handler function tries to lock it, the whole process hangs.
In a single main() function,so need signal handling. Use Posix Message Queue IPC mechanism , can ignore the priority and other linked list message,to implement the scenario:
I'm trying to create a signal handler thread to handle SIGALRM signals. The main thread calls the following function before creating any other threads
Code:
pthread_t Timer::Init(long _clock_interval_musec) { // Set interval. clock_interval = _clock_interval_musec; // This is called while in a single threaded environment.
[code]....
clock_interval is 50.
Is the timer not firing? Did I not set my interval correctly? Did I not proper block the signals ensuring the that the default handler would not take care of them?
I have written a Linux kernel module (in Linux 2.4, Red Hat 9) which does the followings: It takes srcIP, sourceport, destIP, destport and loadvalue as command line arguments. If configured load value is greater than 1, it creates different channels (i.e. No of UDP channels created equals to configured load value), assign different source port and destination port to different channels and send UDP datagram in different channels. Say for example the configured parameters are as follows srcIP=10.17.17.43 destIP= 10.17.17.44 sourceport=10000 destport= 20000 loadvalue=2.
Then it creates two UDP different channels and transmits UDP packets (in every 20 milliseconds) to destination IP address (i.e., 10.17.17.44) with source port 10000, destination port 20000 in one channel and source port 10002, destination port 20000 in another channel. When I configure to pass ?loadvalue=500? and run the module, I get the below kernel panic message in system log file (i.e., var/log/messages) 0>Kernel panic: Aiee, killing interrupt handler! In interrupt handler - not syncing. Running the same linux kernel module ,in 1000 loadvalue, I get this message, eth0: Out-of-sync dirty pointer, 49937 vs. 49954 in text console. I am unable to catch the root cause of these problems and how will I solve these?
A simple TCP based chat server could allow users to use any TCP client (telnet, for example) to communicate with each other. For this question you should consider a single process, single thread server that can support exactly 2 clients at once, the server simply forwards whatever is sent from one client to the other (in both directions). Your server must not insist on any specific ordering of messages as soon as something is sent from one client it is immediately forwarded to the other client. As soon as either client terminates the connection the server can exit
I want that I click with the mouse on the video, it paused.I notice that there is "BaconVideoWidget" which I guess is the video rendering widget but it don't have signal named "clicked":
i want a process that can operate as both a TCP echo server and a UDP echo server. The process can provide service to many clients at the same time, but involves a single process that does not start up any other threads.
I am using Debian linux. I have 100 timers running. If a timer expired which will generate a signal and it was mapped to a same function handler. All the timers are mapped to one function handler. The problem is if the timer expires one at a time, the function handler called at a time. But if the 2 timers expires at a time, the function handler is called one time only instead 2 times. Is it possible to invoke the function handler as many times based on timer expirary happens simultaneoulsy?
I am doing some Linux kernel programming for my research project. I need to record the timestamp (by using cpuid and rdtsc) when an interrupt handler (top half) is first invoked. Due to the time critical nature of the problem itself, I have to do the timestamping inside the interrupt handler itself (the first operation when the handler is called). However, I understand that tasks that are not so time critical should be deferred to a tasklet function (bottom half) for processing because other interrupts are disabled in a (top-half) interrupt handler. I am currently out of idea on how I can pass the timestamp information that I have obtained in the interrupt handler to the corresponding tasklet function.
I'm using ubuntu 9.04, I want to design webpages in PHP for that I installed apache 2 on my machine. I'm using my mobile to connect to the internet when ever the mobile is connected and the wired connection established the server running properly. But when the wired connection disconnected my browser page didn't show the localhost home. How can I configure the apache on my machine.
When using Linux, like Fedora or Ubuntu, can WINE run Abobe Dreamweaver or Microsoft Expression or is there a program in Linux that has a similar user interface to Adobe or Microsoft? Further, does Amaya or Netbeans have free tutorials, or books or e-books? I need to adjust a Flash template, but things are going wrong with free trials of each, and I am concerned that if I buy the CDs that I may waste my money, as much as $600. I think WINE may run them, but Microsoft need net framework 4.0 and Silverlight, then the trial of Expression lasts 30 days.
my instructor gave me a project in c programming language, the probelem i don't have a c program combiler and i don't have a unix os on my computer, and my knowledge in c program is soo weak i took it years ago, i have this code but it does't compile on Dev-C++ on Windows OS, so if you just help me out with this program:
what is the best/accurate way to get the process id in java code in order to write to the log file. To be specific: I am using avalon logkit for logging. I really cannot find a way to write the process id to each line in the log.
I'm doing the shell history audit logging using syslog to gather the command history. I'm using this well publicized method using trap and logger:
declare -r REAL_LOGNAME=`/usr/bin/who am i | cut -d" " -f1` function log2syslog { declare command command=`fc -ln -0` logger -p local1.notice -t bash -i ": $REAL_LOGNAME as $LOGNAME :$command" } trap log2syslog DEBUG TERM
The problem is that the trap on DEBUG will catch the next to last command executed (by virtue of the "fc" command) which is not the current command executed. TERM will catch that "next to last" command on exit, thus completing the logging of each command executed during that session.
However, CTL+D doesn't seem to emit a SIGTERM signal. What signal is actually being emitted and can it be trapped? I guess another question would be whether there is a way to trap history after command line execution? Moving to Bash 4.1 isn't possible in our "supported" multi-platform environment
I have created a pthread, and installed a signal handler inside that, same way as we do in main( ) function. The thread's signal handler is a separate function. Surprisingly, it is not working, that is the thread's signal handler is not able to catch signals. Here is the code:
I have a Socket library, written in C++, in which the method used to send data never has the opportunity to handle an errno of SIGPIPE. Thus I thought perhaps I should setup a signal handler to receive the signal, but this too is not being called.Is there something that I am missing or doing that is completely wrong? Below is the relevant code. Note that a SIGPIPE signal is generated when the Server is unable to send data to the Client (e.g. the client has terminated).Server code:
There are C, C++, Java, Perl, Python, PHP, and some other programming orand scripting languages for a Unix / Linux Distro. On a scale of 1 - 10, I rate myself on:
5 for C / C++ 5 for Java 7 for PHP 2 for Perl
When I look for a Unix job I am often asked if I know C / C++, Perl or Java. Well, they mostly look for C / C++ + Unix or Perl / Python + Unix or Java + Unix combinations. That is the trend here in India. When they advertise for C / C++ + Unix they also mean Real Time System, Kernel (Modules), and Device Drivers Development. I don't know how to do those things in C / C++. But I must say that I love C / C++ and anything else no matter how attractive or easy it could be doesn't look that much challenging to me. So, which should I take now to add to my skills set and be more productive in terms of System Administration and Application Development and Support?
In C/C++ and Java, though I know them, I don't get to work in my current job. However, I often use Shell Script (Bash) and PHP and so I am finding Perl easy because the basics of Computer Programming that I learnt by learning C and C++ and Java have made it easy for me to understand any programming language.
I have a hard time figuring this out. I need to replace the date formats of arrival date(column 31-40) and departure date(column 42-51) and I need 2 outputs. I cannot even figure out how to start.code...
In school, my codes are writeen under UNIX system (Solaris10/SUN), now I need to transfer those codes to Linux (Redhat5). But after I directly copy to Linux, it shows many errors and warnings.
Does anyone know which codes I need to modify to specifily suit for UNIX? I am not familiar with those systems and hope to get your kind help.
creating the below unix script to run in oracle database .I need a script which should do the following things.
1. The script should insert row count of a table from one database(A) into table (AB) in another database(B).
2. The script should update tow count of the similar table and tablespace from database (B) in to a table AB.
3. The script should update the status column of the table AB as: 'Y' if the rowcount of the table@A and rowcount of the table@B matching. or else it should update 'N'
I have a signal handler in my tool, which is registered and used between some particular interval (i am using timer). Now this signal handler should NOT allow any other handler to be registered or invoked after this handler is once registered. Is there any way to accomplish this?
I am writing a bash script where I need standard Input should be saved in a file and should be terminated by passing CTRL+D signal. Any clue how can I do that in bash script.
e.g. Enter one line at a time Press CTRL+D to finish
But unable to catch the SIGTERM signal if I do shutdown, as man pages says shutdown genrates the SIGTERM and SIGKILL signals, but we cant handle the SIGKILL signal. My code is working fine if I genrate the SIGTERM signal by Kill command, and also for SIGINT signgal genrated from the CTRL+c key.
Here is my code:
/* Example of using sigaction() to setup a signal handler with 3 arguments * including siginfo_t. */ #include <stdio.h> #include <unistd.h> #include <signal.h> #include <string.h>