diff options
author | Sree Harsha Totakura <totakura@in.tum.de> | 2012-12-08 13:23:41 +0000 |
---|---|---|
committer | Sree Harsha Totakura <totakura@in.tum.de> | 2012-12-08 13:23:41 +0000 |
commit | a9c860c0fff4cb75afa7518a9137977b096e8bff (patch) | |
tree | 1eb85ea0232309227d183726631c5900e7d0c904 /src/testbed/gnunet_mpi_test.c | |
parent | f07a214d96d23a755b33219c8d96145a6aa62e2a (diff) | |
download | gnunet-a9c860c0fff4cb75afa7518a9137977b096e8bff.tar.gz gnunet-a9c860c0fff4cb75afa7518a9137977b096e8bff.zip |
- exec arbitrary commands
Diffstat (limited to 'src/testbed/gnunet_mpi_test.c')
-rw-r--r-- | src/testbed/gnunet_mpi_test.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/testbed/gnunet_mpi_test.c b/src/testbed/gnunet_mpi_test.c index 85049abc2..e08144a3c 100644 --- a/src/testbed/gnunet_mpi_test.c +++ b/src/testbed/gnunet_mpi_test.c | |||
@@ -12,6 +12,7 @@ int main (int argc, char *argv[]) | |||
12 | { | 12 | { |
13 | char *msg; | 13 | char *msg; |
14 | char *filename; | 14 | char *filename; |
15 | char **argv2; | ||
15 | struct GNUNET_OS_Process *proc; | 16 | struct GNUNET_OS_Process *proc; |
16 | unsigned long code; | 17 | unsigned long code; |
17 | pid_t pid; | 18 | pid_t pid; |
@@ -20,8 +21,14 @@ int main (int argc, char *argv[]) | |||
20 | int rank; | 21 | int rank; |
21 | int msg_size; | 22 | int msg_size; |
22 | int ret; | 23 | int ret; |
24 | unsigned int cnt; | ||
23 | 25 | ||
24 | ret = GNUNET_SYSERR; | 26 | ret = GNUNET_SYSERR; |
27 | if (argc < 2) | ||
28 | { | ||
29 | printf ("Need arguments: gnunet-mpi-test <cmd> <cmd_args>"); | ||
30 | return 1; | ||
31 | } | ||
25 | if (MPI_SUCCESS != MPI_Init (&argc, &argv)) | 32 | if (MPI_SUCCESS != MPI_Init (&argc, &argv)) |
26 | { | 33 | { |
27 | GNUNET_break (0); | 34 | GNUNET_break (0); |
@@ -55,22 +62,27 @@ int main (int argc, char *argv[]) | |||
55 | GNUNET_break (0); | 62 | GNUNET_break (0); |
56 | goto finalize; | 63 | goto finalize; |
57 | } | 64 | } |
58 | 65 | ||
59 | ret = GNUNET_SYSERR; | 66 | ret = GNUNET_SYSERR; |
60 | proc = GNUNET_OS_start_process (GNUNET_NO, | 67 | argv2 = GNUNET_malloc (sizeof (char *) * (argc)); |
61 | GNUNET_OS_INHERIT_STD_ALL, | 68 | for (cnt = 1; cnt < argc; cnt++) |
62 | NULL, | 69 | argv2[cnt - 1] = argv[cnt]; |
63 | NULL, | 70 | proc = GNUNET_OS_start_process_vap (GNUNET_NO, |
64 | "uptime", NULL); | 71 | GNUNET_OS_INHERIT_STD_ALL, |
72 | NULL, | ||
73 | NULL, | ||
74 | argv2[0], argv2); | ||
65 | if (NULL == proc) | 75 | if (NULL == proc) |
66 | { | 76 | { |
67 | printf ("Cannot exec\n"); | 77 | printf ("Cannot exec\n"); |
78 | GNUNET_free (argv2); | ||
68 | goto finalize; | 79 | goto finalize; |
69 | } | 80 | } |
70 | do { | 81 | do { |
71 | (void) sleep (1); | 82 | (void) sleep (1); |
72 | ret = GNUNET_OS_process_status (proc, &proc_status, &code); | 83 | ret = GNUNET_OS_process_status (proc, &proc_status, &code); |
73 | } while (GNUNET_NO == ret); | 84 | } while (GNUNET_NO == ret); |
85 | GNUNET_free (argv2); | ||
74 | GNUNET_assert (GNUNET_NO != ret); | 86 | GNUNET_assert (GNUNET_NO != ret); |
75 | if (GNUNET_OK == ret) | 87 | if (GNUNET_OK == ret) |
76 | { | 88 | { |