blob: 749b007fd12e184d441e3048453b288660e64776 [file] [log] [blame]
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <signal.h>
pid_t pid;
void signal_handler(int signal) {
int res = kill(pid, SIGKILL);
}
int main(int argc, char *argv[])
{
pid = fork();
if (pid == -1) {
perror("Fork failed when trying to spawn qemu process.\n");
return 1;
} else if (pid == 0) { /* Child process */
char* prog_name = "qemu-system-x86_64";
char* params[argc];
int i;
params[0] = prog_name;
for (i = 1; i < argc; ++i)
{
params[i] = argv[i];
}
params[argc] = NULL;
execvp(prog_name, params);
} else { /* Parent process */
int status;
if (signal(SIGUSR1, signal_handler) == SIG_ERR) {
fputs("An error occurred while setting a signal handler.\n", stderr);
return 2;
}
(void) waitpid(pid, &status, 0);
}
return 0;
}