Function: internal-default-signal-process

internal-default-signal-process is a function defined in process.c.

Signature

(internal-default-signal-process PROCESS SIGCODE &optional REMOTE)

Documentation

Default function to send PROCESS the signal with code SIGCODE.

It shall be the last element in list signal-process-functions. See function signal-process for more details on usage.

Probably introduced at or before Emacs version 29.1.

Source Code

// Defined in /usr/src/emacs/src/process.c
{
  pid_t pid;
  int signo;

  if (STRINGP (process))
    {
      Lisp_Object tem = Fget_process (process);
      if (NILP (tem))
	{
	  ptrdiff_t len;
	  tem = string_to_number (SSDATA (process), 10, &len);
	  if ((IEEE_FLOATING_POINT ? NILP (tem) : !NUMBERP (tem))
	      || len != SBYTES (process))
	    return Qnil;
	}
      process = tem;
    }
  else if (!NUMBERP (process))
    process = get_process (process);

  if (NILP (process))
    return process;

  if (NUMBERP (process))
    CONS_TO_INTEGER (process, pid_t, pid);
  else
    {
      CHECK_PROCESS (process);
      pid = XPROCESS (process)->pid;
      if (pid <= 0)
	error ("Cannot signal process %s", SDATA (XPROCESS (process)->name));
    }

  if (FIXNUMP (sigcode))
    signo = check_integer_range (sigcode, INT_MIN, INT_MAX);
  else
    {
      char *name;

      CHECK_SYMBOL (sigcode);
      name = SSDATA (SYMBOL_NAME (sigcode));

      signo = abbr_to_signal (name);
      if (signo < 0)
	error ("Undefined signal name %s", name);
    }

  return make_fixnum (kill (pid, signo));
}