08-07-2009
Quote:
Originally Posted by
Corona688
Well, you can't cancel signals that way. How about blocking them instead? You can make a signal wait in a queue until you're ready to deal with it with sigprocmask.
I see a potential problem (rare) with this approach, what if, when a file is being processed, signal 2 (2nd instance) is passed, since its blocked it will have to wait, while the first file is still being processed and if there are multiple instances of signals being queued ( due to the reason they are blocked ) ... that could be when there is an application bug that is indefinitely processing a file, without completing the signal handler, or closing a filehandle via possible stale NFS.
All these will have end up in having multiple signals in state " that are yet to be delivered "
---------- Post updated at 09:40 AM ---------- Previous update was at 09:34 AM ----------
Quote:
Originally Posted by
nvhoang
Thank you all Corona688 and matrixmadhan for your replies,
Because I have 2 applications and need to make communication via files and signal.
The first application shall write some files then send a signal to the second application telling the second to processes and then delete those files.
The problem is that, when the second is processing those files, the first one may throw new files and signal (the goal is the second gets latest data); therefore the second might delete new files which leads to lost of data or to be consistent.
So I hope that, I could, when a signal comes the second restarts processing those files (and discard instructions from previous signal action). I know this is not nature of signal handling.
(I know that I can make it synchronously by making the second send back a signal to the first to tell that it is ready to receive new signal, for example).
Correct me if am wrong somewhere, please
these are the sequence of actions
- first application processing is processing a file
- processing done, first application sends a signal to second appln to initiate processing
- second application starts processing
- before 2nd could complete, first completes processing and makes 2nd file ready for processing, signals 2nd application.
Now, should 2nd application delete the first file and start processing the second file?
If that is the case, there could be a shared memory segment between 1st and 2nd application and make 2nd application to listen for any data contents in the shared memory segment, and based on the filename in the data segment process only that file and discard others.
10 More Discussions You Might Find Interesting
1. UNIX for Advanced & Expert Users
Hi,
this is my script to make a choice between 4 :
clear
echo " choose a profile and enter a number"
echo
echo " 1- oraSTT "
echo
echo " 2- appSTT "
echo... (3 Replies)
Discussion started by: big123456
3 Replies
2. Solaris
Hi all,
make_lofs /.cdrom/<something>/<something> 1
what does this instruction mean?
Note:both the "something" are obviously different .
I would like to know what that 1 means, the rest of the instruction is clear!!
Thanks (6 Replies)
Discussion started by: wrapster
6 Replies
3. Shell Programming and Scripting
Hi,
I'd get fields like
unix_linux_form_yyyyddmmhhmi.file.txt
shell_programming_and_scripting.txt
so on...
and want them as below
unix_linux_form
shell_programming_and
I could remove everything after a '.' as below
echo $field | sed 's/\..*//'
but how to remove... (14 Replies)
Discussion started by: dips_ag
14 Replies
4. Shell Programming and Scripting
Dear shell experts,
I spent last few days porting ksh script from ksh88/SunOS to ksh93/Linux.
Basically, things are going well and I do not have too much troubles porting ks88 script to ksh93, but I stuck on one item. It's about sending and handling the signal.
I found two similar... (8 Replies)
Discussion started by: bzk
8 Replies
5. Shell Programming and Scripting
Hi all,
I'd like to search a file for the first occurence of the phrase "PLASTICS THAT EXPIRE" and then discard all the lines that came before it. Output the remainder to a new file. Operating system is hp-ux. I've searched for usual awk and sed one liners but can't find a solution.
Thank... (4 Replies)
Discussion started by: Scottie1954
4 Replies
6. Shell Programming and Scripting
I want to remove commands having no output. In below text file.
bash-3.2$ cat abc_do_it.txt
grpg10so>show trunk group all status
grpg11so>show trunk group all status
grpg12so>show trunk group all status
GCPKNYAIGT73IMO 1440 1345 0 0 94 0 0 INSERVICE 93% 0%... (4 Replies)
Discussion started by: Raza Ali
4 Replies
7. Shell Programming and Scripting
Pleas I want answer to this question? Pleas help me
A system administrator suspects that there is an attack on his machine; he needs to make a backup of the files to check when they have been modified. For this purpose he uses the "cp -r" instruction to copy the root directory. What is the... (1 Reply)
Discussion started by: tamer11007
1 Replies
8. Shell Programming and Scripting
Hi,
I'd like to do an operation on text with a format like this
this line shall be numbered
this line shall not be numbered
this line shall also be numbered
this line shall not not be numbered
And I want an output like this
1 this line shall be numbered
this line... (6 Replies)
Discussion started by: jeppe83
6 Replies
9. Shell Programming and Scripting
I have the file:
s3_T0(2) Pos "1" "2"
s1_T1(2) Pos "1" "2"
---
0 0
1 0
0 1
1 1
---
1 2 "tau0"
1 2 "h10"
I want to patternmatch on ---
and get only the third part i.e.
1 2 "tau0"
1 2 "h10"
I wanted to start simple but even something like (5 Replies)
Discussion started by: eagle_fly
5 Replies
10. UNIX for Dummies Questions & Answers
Hi guys !
I generated the power set of the set S={a,b,c} using crunch:
crunch 1 3 abc
and get the 39 possible subsets:
a
b
c
aa
ab
ac
ba
bb
bc
ca
cb
cc
… (2 Replies)
Discussion started by: beca123456
2 Replies
LEARN ABOUT FREEBSD
pcap_breakloop
PCAP_BREAKLOOP(3) Library Functions Manual PCAP_BREAKLOOP(3)
NAME
pcap_breakloop - force a pcap_dispatch() or pcap_loop() call to return
SYNOPSIS
#include <pcap/pcap.h>
void pcap_breakloop(pcap_t *);
DESCRIPTION
pcap_breakloop() sets a flag that will force pcap_dispatch() or pcap_loop() to return rather than looping; they will return the number of
packets that have been processed so far, or -2 if no packets have been processed so far.
This routine is safe to use inside a signal handler on UNIX or a console control handler on Windows, as it merely sets a flag that is
checked within the loop.
The flag is checked in loops reading packets from the OS - a signal by itself will not necessarily terminate those loops - as well as in
loops processing a set of packets returned by the OS. Note that if you are catching signals on UNIX systems that support restarting system
calls after a signal, and calling pcap_breakloop() in the signal handler, you must specify, when catching those signals, that system calls
should NOT be restarted by that signal. Otherwise, if the signal interrupted a call reading packets in a live capture, when your signal
handler returns after calling pcap_breakloop(), the call will be restarted, and the loop will not terminate until more packets arrive and
the call completes.
Note also that, in a multi-threaded application, if one thread is blocked in pcap_dispatch(), pcap_loop(), pcap_next(), or pcap_next_ex(),
a call to pcap_breakloop() in a different thread will not unblock that thread; you will need to use whatever mechanism the OS provides for
breaking a thread out of blocking calls in order to unblock the thread, such as thread cancellation in systems that support POSIX threads.
Note that pcap_next() and pcap_next_ex() will, on some platforms, loop reading packets from the OS; that loop will not necessarily be ter-
minated by a signal, so pcap_breakloop() should be used to terminate packet processing even if pcap_next() or pcap_next_ex() is being used.
pcap_breakloop() does not guarantee that no further packets will be processed by pcap_dispatch() or pcap_loop() after it is called; at most
one more packet might be processed.
If -2 is returned from pcap_dispatch() or pcap_loop(), the flag is cleared, so a subsequent call will resume reading packets. If a posi-
tive number is returned, the flag is not cleared, so a subsequent call will return -2 and clear the flag.
SEE ALSO
pcap(3), pcap_loop(3), pcap_next_ex(3)
5 April 2008 PCAP_BREAKLOOP(3)