aboutsummaryrefslogtreecommitdiff
path: root/src/testbed/gnunet_mpi_test.c
diff options
context:
space:
mode:
authorSree Harsha Totakura <totakura@in.tum.de>2012-12-08 13:23:41 +0000
committerSree Harsha Totakura <totakura@in.tum.de>2012-12-08 13:23:41 +0000
commita9c860c0fff4cb75afa7518a9137977b096e8bff (patch)
tree1eb85ea0232309227d183726631c5900e7d0c904 /src/testbed/gnunet_mpi_test.c
parentf07a214d96d23a755b33219c8d96145a6aa62e2a (diff)
downloadgnunet-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.c24
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 {