Pass the arguments to sh for execution.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
f->flags &= ~FIO_FILE_DONE;
}
f->flags &= ~FIO_FILE_DONE;
}
+static int exec_string(const char *string)
+{
+ int ret, newlen = strlen(string) + 1 + 8;
+ char *str;
+
+ str = malloc(newlen);
+ sprintf(str, "sh -c %s", string);
+
+ ret = system(str);
+ if (ret == -1)
+ log_err("fio: exec of cmd <%s> failed\n", str);
+
+ free(str);
+ return ret;
+}
+
/*
* Entry point for the thread based jobs. The process based jobs end up
* here as well, after a little setup.
/*
* Entry point for the thread based jobs. The process based jobs end up
* here as well, after a little setup.
goto err;
if (td->o.exec_prerun) {
goto err;
if (td->o.exec_prerun) {
- if (system(td->o.exec_prerun) < 0)
+ if (exec_string(td->o.exec_prerun))
finish_log(td, td->ts.clat_log, "clat");
}
fio_mutex_up(writeout_mutex);
finish_log(td, td->ts.clat_log, "clat");
}
fio_mutex_up(writeout_mutex);
- if (td->o.exec_postrun) {
- if (system(td->o.exec_postrun) < 0)
- log_err("fio: postrun %s failed\n", td->o.exec_postrun);
- }
+ if (td->o.exec_postrun)
+ exec_string(td->o.exec_postrun);
if (exitall_on_terminate)
terminate_threads(td->groupid);
if (exitall_on_terminate)
terminate_threads(td->groupid);