static bool g_traceOverwrite = false;
static int g_traceBufferSizeKB = 2048;
static bool g_compress = false;
+static bool g_nohup = false;
+static int g_initialSleepSecs = 0;
/* Global state */
static bool g_traceAborted = false;
}
static void handleSignal(int signo) {
- g_traceAborted = true;
+ if (!g_nohup) {
+ g_traceAborted = true;
+ }
}
static void registerSigHandler() {
for (;;) {
int ret;
- ret = getopt(argc, argv, "b:cidflst:uwz");
+ ret = getopt(argc, argv, "b:cidflst:uwznS:");
if (ret < 0) {
break;
g_traceFrequency = true;
break;
+ case 'n':
+ g_nohup = true;
+ break;
+
case 's':
g_traceSchedSwitch = true;
break;
+ case 'S':
+ g_initialSleepSecs = atoi(optarg);
+ break;
+
case 't':
g_traceDurationSeconds = atoi(optarg);
break;
registerSigHandler();
+ if (g_initialSleepSecs > 0) {
+ sleep(g_initialSleepSecs);
+ }
+
bool ok = startTrace(isRoot);
if (ok) {