#include "exec_nit.h"
#include <stdlib.h>
#include <string.h>
+#include <errno.h>
+#include <stdio.h>
-se_exec_data_t* exec_Process_Process_basic_exec_execute_4(int c, char *prog, char *args, int len, int pipeflag) {
+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;
int id;
int in_fd[2];
int out_fd[2];
int err_fd[2];
- if (pipeflag & 1)
- pipe(in_fd);
- if (pipeflag & 2)
- pipe(out_fd);
- if (pipeflag & 4)
- pipe(err_fd);
+ if (pipeflag & 1) {
+ int res = pipe(in_fd);
+ if ( res == -1 ) {
+ return NULL;
+ }
+ }
+ if (pipeflag & 2) {
+ int res = pipe(out_fd);
+ if ( res == -1 ) {
+ return NULL;
+ }
+ }
+ if (pipeflag & 4) {
+ int res = pipe(err_fd);
+ if ( res == -1 ) {
+ return NULL;
+ }
+ }
id = fork();
if (id == 0)
/* calls */
execvp(prog, arg);
- abort();
+ _exit(127);
}
else if (id > 0)
{ /* father */
} else
result->err_fd = -1;
}
+
return result;
}
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);
+ }
+ return status;
+}