libamxp  1.4.0
Patterns C Implementation
main.c File Reference
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdarg.h>
#include <sys/wait.h>
#include <sys/prctl.h>
#include <sys/resource.h>
#include <signal.h>
#include <amxc/amxc.h>
#include <amxc/amxc_llist.h>
#include <amxp/amxp_subproc.h>
#include <amxp/amxp_signal.h>
#include <amxp/amxp_slot.h>

Go to the source code of this file.

Macros

#define _GNU_SOURCE
 

Functions

static void slot_sigchild_recieved (const char *const sig_name, const amxc_var_t *const data, void *const priv)
 
static void slot_child_proc_stopped (const char *const sig_name, const amxc_var_t *const data, void *const priv)
 
int main (void)
 

Macro Definition Documentation

◆ _GNU_SOURCE

#define _GNU_SOURCE

Definition at line 54 of file main.c.

Function Documentation

◆ main()

int main ( void  )

Definition at line 93 of file main.c.

93  {
94  int err;
95 
96  amxp_subproc_t* subproc1 = NULL;
97  amxp_subproc_t* subproc2 = NULL;
98  char* cmd_sleep1[] = { "sleep", "2", NULL};
99  char* cmd_sleep2[] = { "sleep", "20", NULL};
100 
101  err = amxp_subproc_new(&subproc1);
102  printf("amxp_subproc_new: %d\n", err);
103  err = amxp_subproc_new(&subproc2);
104  printf("amxp_subproc_new: %d\n", err);
105 
106  amxp_slot_connect(amxp_subproc_get_sigmngr(subproc1), "stop", NULL, slot_child_proc_stopped, subproc1);
107  amxp_slot_connect(amxp_subproc_get_sigmngr(subproc2), "stop", NULL, slot_child_proc_stopped, subproc2);
108 
109  amxp_slot_connect(NULL,
110  strsignal(SIGCHLD),
111  NULL,
113  NULL);
114 
115 
116  err = amxp_subproc_vstart(subproc1, cmd_sleep1);
117  printf("Started process pid = %d\n", subproc1->pid);
118  printf("amxp_subproc_vstart: %d\n", err);
119  err = amxp_subproc_vstart(subproc2, cmd_sleep2);
120  printf("Started process pid = %d\n", subproc2->pid);
121  printf("amxp_subproc_vstart: %d\n", err);
122 
123  err = amxp_subproc_wait(subproc2, 100);
124  printf("amxp_subproc_wait: %d\n", err);
125 
126 
127  return 0;
128 }
static void slot_child_proc_stopped(const char *const sig_name, const amxc_var_t *const data, void *const priv)
Definition: main.c:83
static void slot_sigchild_recieved(const char *const sig_name, const amxc_var_t *const data, void *const priv)
Definition: main.c:74
int amxp_slot_connect(amxp_signal_mngr_t *const sig_mngr, const char *const sig_name, const char *const expression, amxp_slot_fn_t fn, void *const priv)
Connects a slot (function) to a named signal of a signal manager.
Definition: amxp_slot.c:300
int amxp_subproc_new(amxp_subproc_t **subproc)
Constructor function, creates a new child process data structure.
Definition: amxp_subproc.c:215
int amxp_subproc_wait(amxp_subproc_t *subproc, int timeout_msec)
Waits until the child process has stopped.
Definition: amxp_subproc.c:428
int amxp_subproc_vstart(amxp_subproc_t *const subproc, char **argv)
Start a child process.
Definition: amxp_subproc.c:288
amxp_signal_mngr_t * amxp_subproc_get_sigmngr(const amxp_subproc_t *const subproc)
Get the Signal managers of the child process.
Definition: amxp_subproc.c:419
Child process information structure.
Definition: amxp_subproc.h:87

◆ slot_child_proc_stopped()

static void slot_child_proc_stopped ( const char *const  sig_name,
const amxc_var_t *const  data,
void *const  priv 
)
static

Definition at line 83 of file main.c.

85  {
86  amxp_subproc_t* subproc = (amxp_subproc_t*) priv;
87  printf("AMX Signal = %s\n", sig_name);
88  amxc_var_dump(data, STDOUT_FILENO);
89 
90  printf("Stopped process pid = %d\n", subproc->pid);
91 }

◆ slot_sigchild_recieved()

static void slot_sigchild_recieved ( const char *const  sig_name,
const amxc_var_t *const  data,
void *const  priv 
)
static

Definition at line 74 of file main.c.

76  {
77 
78  (void) priv;
79  (void) data;
80  printf("AMX SIGNAL %s received\n", sig_name);
81 }