]> rtime.felk.cvut.cz Git - can-benchmark.git/blobdiff - latester/setpgid.c
Speedup cpu-load experiments by stopping hackbench during maintenance
[can-benchmark.git] / latester / setpgid.c
diff --git a/latester/setpgid.c b/latester/setpgid.c
new file mode 100644 (file)
index 0000000..0562302
--- /dev/null
@@ -0,0 +1,29 @@
+#define _XOPEN_SOURCE 500
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <signal.h>
+
+int main(int argc, char *argv[])
+{
+       if (argc < 2) {
+               fprintf(stderr, "Usage: %s <command>\n", argv[0]);
+               return 1;
+       }
+       pid_t pid;
+       pid = atol(argv[1]);
+       if (setpgid(0, 0) != 0) {
+               perror("setpgid");
+               return 1;
+       }
+
+       char **newargv = malloc(sizeof(void*)*argc);
+       unsigned i;
+       for (i=1; i<argc; i++)
+               newargv[i-1] = argv[i];
+       newargv[argc-1] = NULL;
+       kill(0, SIGSTOP);
+       execvp(argv[1], newargv);
+       perror("execvp");   /* execve() only returns on error */
+       exit(EXIT_FAILURE);
+}