1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
#include <stdio.h>
#include <stdlib.h>
#include "drmaa.h"
#define WD "/tmp"
int handle_code(int code, char *msg);
int main(int argc, char **argv) {
int ret = DRMAA_ERRNO_SUCCESS;
char error[DRMAA_ERROR_STRING_BUFFER + 1];
drmaa_job_template_t *jt = NULL;
char jobid[DRMAA_JOBNAME_BUFFER + 1];
if (argc != 2) {
printf("Usage: %s path_to_script\n", argv[0]);
exit(1);
}
ret = drmaa_init("", error, DRMAA_ERROR_STRING_BUFFER);
if (handle_code(ret, error) == 1) {
exit(1);
}
ret = drmaa_allocate_job_template(&jt, error, DRMAA_ERROR_STRING_BUFFER);
if (handle_code(ret, error) == 1) {
return 1;
}
ret = drmaa_set_attribute(jt, DRMAA_REMOTE_COMMAND, argv[1], error,
DRMAA_ERROR_STRING_BUFFER);
if (handle_code(ret, error) == 1) {
return 1;
}
ret = drmaa_set_attribute(jt, DRMAA_WD, WD, error,
DRMAA_ERROR_STRING_BUFFER);
if (handle_code(ret, error) == 1) {
return 1;
}
ret = drmaa_set_attribute(jt, DRMAA_NATIVE_SPECIFICATION, "-b n -cwd", error,
DRMAA_ERROR_STRING_BUFFER);
if (handle_code(ret, error) == 1) {
return 1;
}
ret = drmaa_run_job(jobid, DRMAA_JOBNAME_BUFFER, jt, error,
DRMAA_ERROR_STRING_BUFFER);
if (handle_code(ret, error) == 1) {
return 1;
}
ret = drmaa_exit(error, DRMAA_ERROR_STRING_BUFFER);
handle_code(ret, error);
printf ("OK\n");
return 0;
}
int handle_code(int code, char *msg) {
if (code != DRMAA_ERRNO_SUCCESS) {
printf("EXCEPTION: %s\n", msg);
return 1;
}
else {
return 0;
}
}
|