#include <stdlib.h>
#include <string.h>
#include <errno.h>
+#include <stdio.h>
se_exec_data_t* exec_Process_Process_basic_exec_execute_4(void *s, char *prog, char *args, int len, int pipeflag) {
se_exec_data_t* result = NULL;
if (pipeflag & 1) {
int res = pipe(in_fd);
if ( res == -1 ) {
- fprintf( stderr, "Pipe init failed in Process:basic_exec_execute: %s\n", strerror( errno ) );
- exit(1);
+ return NULL;
}
}
if (pipeflag & 2) {
int res = pipe(out_fd);
if ( res == -1 ) {
- fprintf( stderr, "Pipe init failed in Process:basic_exec_execute: %s\n", strerror( errno ) );
- exit(1);
+ return NULL;
}
}
if (pipeflag & 4) {
int res = pipe(err_fd);
if ( res == -1 ) {
- fprintf( stderr, "Pipe init failed in Process:basic_exec_execute: %s\n", strerror( errno ) );
- exit(1);
+ return NULL;
}
}
/* calls */
execvp(prog, arg);
- abort();
+ _exit(127);
}
else if (id > 0)
{ /* father */
data->running = 0;
}
}
+
+int string_NativeString_NativeString_system_0(const char *cmd) {
+ int status = system(cmd);
+ if (WIFSIGNALED(status) && WTERMSIG(status) == SIGINT) {
+ // cmd exited on SIGINT: in my opinion the user wants the main to be discontinued
+ kill(getpid(), SIGINT);
+ }
+}