Sponsored Content
Full Discussion: Signal Processing
Top Forums UNIX for Dummies Questions & Answers Signal Processing Post 8202 by Perderabo on Monday 8th of October 2001 10:19:26 AM
Old 10-08-2001
Gee, thanks for the kind words guys!

No, you cannot just assume the next pid will be the current pid +1. You're on a multi-user machine. Stuff like cron runs all the time. If someone else forks first, they get the next pid. Also in a multi-cpu system, each cpu will usually reserve a chunk of 10 or so pids at once to cut down on spinlocks. Finally, pids recycle after pid 32,000.

The worst consequence of the sleep program in the background is that it is consuming a proc table entry. Too many of these and eventually you bump into maxuprc and cannot fork anymore. As long as that was not an issue, I'd just let it run. Remember that it will take code to remember or find the pid and then kill the pid. The load that this code would put on the system is trivial, but the only payback is the early death of a sleep statement...it can't make a profit.

If you really got to nail that last sleep process, a "kill $(ps -f | grep [s]leep |awk '{print $2}')" should get it.
 

7 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Script Signal Processing

I am trying to develop a script that will properly handle kill signals particularly kill -2. I have program (_progres) that properly receives the signal if I run it from the command line directly: _progres -T /tmp -p /home/mejones/signal.p -b 2>&1 & If I try to put it in a script (i.e.... (2 Replies)
Discussion started by: mejones99
2 Replies

2. Programming

Signal processing

We have written a deamon which have many threads. We are registering for the SIGTERM and trying to close main thread in this signal handling. Actually these are running on Mac OS X ( BSD unix). When we are unloading the deamon with command launchctl, it's sending SIGTERM signal to our process... (1 Reply)
Discussion started by: Akshay4u
1 Replies

3. Programming

alarm signal processing

I'm writing a function right now, and I want to set an alarm to avoid a timeout, here's the general idea of my code: int amt = -2; alarm(10); amt = read(fd, &t->buf, TASKBUFSIZ - tailpos); //do a read when the alarm goes off, i want to check the value of "amt" ... (1 Reply)
Discussion started by: liaobert
1 Replies

4. Solaris

Signal Processing in unix

I've read the man page of singal(3) but I still can't quite understand what is the difference between SIGINT, SIGALRM and SIGTERM. Can someone tell me what is the behavioral difference among these 3 signals in kill command? Thanks! (2 Replies)
Discussion started by: joe228
2 Replies

5. Shell Programming and Scripting

How to make parallel processing rather than serial processing ??

Hello everybody, I have a little problem with one of my program. I made a plugin for collectd (a stats collector for my servers) but I have a problem to make it run in parallel. My program gathers stats from logs, so it needs to run in background waiting for any new lines added in the log... (0 Replies)
Discussion started by: Samb95
0 Replies

6. Programming

awk processing / Shell Script Processing to remove columns text file

Hello, I extracted a list of files in a directory with the command ls . However this is not my computer, so the ls functionality has been revamped so that it gives the filesizes in front like this : This is the output of ls command : I stored the output in a file filelist 1.1M... (5 Replies)
Discussion started by: ajayram
5 Replies

7. Shell Programming and Scripting

Continue Processing after a signal is caught

Is it possible to continue after signal is caught and control goes to function specified in the trap statement? (3 Replies)
Discussion started by: Soham
3 Replies
bind_to_cpu(3)						     Library Functions Manual						    bind_to_cpu(3)

NAME
bind_to_cpu - Bind execution to a specific CPU. LIBRARY
Mach Library (libmach.a) SYNOPSIS
#include <sys/types.h> #include <sys/resource.h> int bind_to_cpu( pid_t pid, unsigned long cpu_mask , unsigned long flag ); PARAMETERS
Specifies the target pid. You must have access rights to the pid. Specifies the CPU on which the thread should run. The target CPU is the bit index in the mask. If you set more than one bit, an error is generated. A cpu_mask of zero clears any previously set CPU binding. Specifies options to CPU binding. Currently only the option BIND_NO_INHERIT is supported. When set, this option causes child processes and threads to not inherit the CPU binding. DESCRIPTION
Upon return from bind_to_cpu, all threads of the target pid are running on the target CPU. Bound threads are not eligible for execution on any other CPU. You release CPU binding by invoking bind_to_cpu with a cpu_mask of zero. EXAMPLES
/* * Fork child process and force it to run on cpu number 3. * Processes created by the forked child will not inherit bindings. */ #include <sys/resource.h> #include <sys/sysinfo.h> #include <sys/signal.h> #include <sys/types.h> #define CPU_3 0x8 /* Bit 3 set */ main() { pid_t pid; if (pid = fork()) { /* parent */ if (bind_to_cpu(pid, CPU_3, BIND_NO_INHERIT)) { kill(pid, SIGKILL); exit(1); /* bind_to_cpu() will print error msg */ } sleep(2); /* wait for child to print CPU */ } else { /* child */ long cpu_num; sleep(1); /* wait for parent to bind CPU */ getsysinfo(GSI_CURRENT_CPU, &cpu_num, 0L, 0L, 0L); printf("child running on CPU %d ", cpu_num); } } In this example, the CPU_3 symbol is defined so that bit three in the bit mask is set. When the pid returned from the fork routine identi- fies the parent routine, the bind_to_cpu routine is called. This routine binds the child process to CPU number three, as specified in the CPU_3 symbol. When the pid returned from the fork routine identifies the child routine, the child routine sleeps to give the parent routine time to set its CPU binding. Then it uses the getsysinfo call to determine its CPU and displays its CPU with the printf routine. If the return value from the bind_to_cpu routine indicates an error, the parent process kills the child process and exits with an error status. RETURN VALUES
Upon successful completion, bind_to_cpu returns zero. Upon error, a -1 is returned. RELATED INFORMATION
Commands: runon(1) Functions: getsysinfo(2) delim off bind_to_cpu(3)
All times are GMT -4. The time now is 01:28 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy