/* * actions_add_trace_output - add an action to send signal to a process
*/ int
actions_add_signal(struct actions *self, int signal, int pid)
{ struct action *action = actions_new(self);
/* * actions_parse - add an action based on text specification
*/ int
actions_parse(struct actions *self, constchar *trigger)
{ enum action_type type = ACTION_NONE; char *token; char trigger_c[strlen(trigger) + 1];
token = strtok(NULL, ","); if (token != NULL) /* Only one argument allowed */ return -1;
} return actions_add_trace_output(self, trace_output); case ACTION_SIGNAL: /* Takes two arguments, num (signal) and pid */ while (token != NULL) { if (strlen(token) > 4 && strncmp(token, "num=", 4) == 0) {
signal = atoi(token + 4);
} elseif (strlen(token) > 4 && strncmp(token, "pid=", 4) == 0) { if (strncmp(token + 4, "parent", 7) == 0)
pid = -1; else
pid = atoi(token + 4);
} else { /* Invalid argument */ return -1;
}
token = strtok(NULL, ",");
}
if (!signal || !pid) /* Missing argument */ return -1;
return actions_add_signal(self, signal, pid); case ACTION_SHELL: if (token == NULL) return -1; if (strlen(token) > 8 && strncmp(token, "command=", 8) == 0) return actions_add_shell(self, token + 8); return -1; case ACTION_CONTINUE: /* Takes no argument */ if (token != NULL) return -1; return actions_add_continue(self); default: return -1;
}
}
/* * actions_perform - perform all actions
*/ int
actions_perform(struct actions *self)
{ int pid, retval; conststruct action *action;
for (action = self->list; action < self->list + self->len; action++) { switch (action->type) { case ACTION_TRACE_OUTPUT:
retval = save_trace_to_file(self->trace_output_inst, action->trace_output); if (retval) {
err_msg("Error saving trace\n"); return retval;
} break; case ACTION_SIGNAL: if (action->pid == -1)
pid = getppid(); else
pid = action->pid;
retval = kill(pid, action->signal); if (retval) {
err_msg("Error sending signal\n"); return retval;
} break; case ACTION_SHELL:
retval = system(action->command); if (retval) return retval; break; case ACTION_CONTINUE:
self->continue_flag = true; return0; default: break;
}
}
return0;
}
Messung V0.5 in Prozent
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.12Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-06-07)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.