MIAMEX 57: Send signal to another process

xcall MIAMEX, MX_KILL, pid, signal, status

(UNIX only) MX_KILL allows you to send any UNIX signal to another process, provided you have sufficient privileges. It provides essentially the same functionality as the UNIX kill utility (which, despite its name, allows sending any signal).

Parameters

pid  (Num)  [in]

is the process ID number of the target process. You can get this information from SYSTAT, or perhaps by reading the jobtbl directly.

signal  (Num)  [in]

is the signal to send, from the following table. Note that the actual signal numbers associated with the names are not guaranteed to be uniform across versions of UNIX, although these (taken from Linux) are fairly standard. Signals that have no plausible use in applications have been omitted. Also note that these numbers are not related at all to the numbers in the SIGMASK used in functions 55 and 56. Signal 0 is particularly useful for determining if a target process still exists.

Symbol

Value

Meaning

None

0

Used to determine if target PID exists

SIGHUP

1

Hangup (telnet or terminal session disconnected)

SIGINT

2

Ctrl+C

SIGQUIT

3

Abort foreground processes, without core dump

SIGABRT

6

Force abort; similar to SIGQUIT

SIGKILL

9

Kill (cannot be trapped)

SIGUSR1

10

User signal (used by ITC, IJC messages)

SIGUSR2

12

User signal (used by PolyShell)

SIGALRM

14

Alarm signal (used by sleep timers and WAKNO.SBR)

SIGTERM

15

Default kill signal; generates error 251

Definition file: ashell.def

 

status  (Signed Num)  [out]

Returns 0 to indicate success (i.e. the signal was delivered to the target process, or, in the case of the pseudo-signal 0, it indicates that the target process exists, regardless of whether the sender has sufficient privileges to send a real signal).   For any real signal (i.e. signal > 0), status will return -1 if the sender does not have sufficient privileges to deliver the signal.

In order to deliver a signal to another process, it must be logged in as the same effective user as the sender, or the sender must be root. One way to ensure this is to use the "setuid" bit on the ashell executable to make all A-Shell users the same effective user. Search this doc for "ashkill" for further information on that subject.