execute_program.c revision 5e01f654d83a95f2acffa86df57a4c2db9b0cae9
1#include <stdio.h>
2#include <unistd.h>
3#include <errno.h>
4#include <string.h>
5
6#include "ltrace.h"
7#include "options.h"
8#include "output.h"
9#include "sysdep.h"
10
11void execute_program(struct process * sp, char **argv)
12{
13	int pid;
14
15	if (opt_d) {
16		output_line(0, "Executing `%s'...", sp->filename);
17	}
18
19	pid = fork();
20	if (pid<0) {
21		perror("fork");
22		exit(1);
23	} else if (!pid) {	/* child */
24		trace_me();
25		execvp(sp->filename, argv);
26		fprintf(stderr, "Can't execute `%s': %s\n", sp->filename, strerror(errno));
27		exit(1);
28	}
29
30	if (opt_d) {
31		output_line(0, "PID=%d", pid);
32	}
33
34	sp->pid = pid;
35
36	return;
37}
38