1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00

changed signature of spawn()

This commit is contained in:
Steffen Vogel 2017-04-15 18:22:47 +02:00
parent b94216959f
commit d4ddad603b
4 changed files with 16 additions and 14 deletions

View file

@ -26,7 +26,7 @@ struct shmem {
int insize, outsize; /**< Size of ingoing and outgoing queue, respectively. */
int cond_out; /**< Whether to use a pthread_cond_t to signal if new samples are written to outqueue. */
int cond_in; /**< Whether to use a pthread_cond_t to signal if new samples are written to inqueue. */
const char * const exec; /**< External program to execute on start. */
char **exec; /**< External program to execute on start. */
struct memtype *manager; /**< Manager for the shared memory region. */
int fd; /**< Handle as returned by shm_open().*/

View file

@ -230,4 +230,4 @@ void rdtsc_sleep(uint64_t nanosecs, uint64_t start);
/** Register a exit callback for program termination (SIGINT / SIGKILL). */
void signals_init(void (*cb)(int signal, siginfo_t *sinfo, void *ctx));
pid_t spawn(const char* name, char **argv);
pid_t spawn(const char* name, char *const argv[]);

View file

@ -46,9 +46,11 @@ int shmem_parse(struct node *n, config_setting_t *cfg)
int i;
for (i = 0; i < config_setting_length(exec_cfg); i++) {
shm->exec[i] = config_setting_get_string_elem(exec_cfg, i);
if (!shm->exec[i])
const char *elm = config_setting_get_string_elem(exec_cfg, i);
if (!elm)
cerror(exec_cfg, "Invalid format for exec");
shm->exec[i] = strdup(elm);
}
shm->exec[i] = NULL;

View file

@ -302,15 +302,15 @@ void signals_init(void (*cb)(int signal, siginfo_t *sinfo, void *ctx))
sigaction(SIGCHLD, &sa_chld, NULL);
}
pid_t
spawn(const char* name, char **argv) {
pid_t pid = fork();
switch(pid) {
case -1:
return -1;
case 0:
return execvp(name, argv);
default:
return pid;
pid_t spawn(const char* name, char *const argv[])
{
pid_t pid;
pid = fork();
switch (pid) {
case -1: return -1;
case 0: return execvp(name, (char * const*) argv);
}
return pid;
}