Mercurial > hg > svcore
annotate base/System.cpp @ 124:4ab844784152
* 1507728: Crash when creating spectrogram of small soundfiles
author | Chris Cannam |
---|---|
date | Mon, 19 Jun 2006 14:19:55 +0000 |
parents | ac89a106f155 |
children | 514ebb0c5c6c |
rev | line source |
---|---|
Chris@49 | 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ |
Chris@0 | 2 |
Chris@0 | 3 /* |
Chris@52 | 4 Sonic Visualiser |
Chris@52 | 5 An audio file viewer and annotation editor. |
Chris@52 | 6 Centre for Digital Music, Queen Mary, University of London. |
Chris@52 | 7 This file copyright 2006 Chris Cannam. |
Chris@0 | 8 |
Chris@52 | 9 This program is free software; you can redistribute it and/or |
Chris@52 | 10 modify it under the terms of the GNU General Public License as |
Chris@52 | 11 published by the Free Software Foundation; either version 2 of the |
Chris@52 | 12 License, or (at your option) any later version. See the file |
Chris@52 | 13 COPYING included with this distribution for more information. |
Chris@0 | 14 */ |
Chris@0 | 15 |
Chris@0 | 16 #include "System.h" |
Chris@0 | 17 |
Chris@98 | 18 #ifndef _WIN32 |
Chris@101 | 19 #include <signal.h> |
Chris@98 | 20 #endif |
Chris@98 | 21 |
Chris@98 | 22 #include <iostream> |
Chris@98 | 23 |
Chris@0 | 24 #ifdef _WIN32 |
Chris@0 | 25 |
Chris@0 | 26 extern "C" { |
Chris@0 | 27 |
Chris@103 | 28 void usleep(unsigned long usec) |
Chris@103 | 29 { |
Chris@105 | 30 ::Sleep(usec / 1000); |
Chris@103 | 31 } |
Chris@103 | 32 |
Chris@0 | 33 void gettimeofday(struct timeval *tv, void *tz) |
Chris@0 | 34 { |
Chris@0 | 35 union { |
Chris@0 | 36 long long ns100; |
Chris@0 | 37 FILETIME ft; |
Chris@0 | 38 } now; |
Chris@0 | 39 |
Chris@105 | 40 ::GetSystemTimeAsFileTime(&now.ft); |
Chris@0 | 41 tv->tv_usec = (long)((now.ns100 / 10LL) % 1000000LL); |
Chris@0 | 42 tv->tv_sec = (long)((now.ns100 - 116444736000000000LL) / 10000000LL); |
Chris@0 | 43 } |
Chris@0 | 44 |
Chris@0 | 45 } |
Chris@0 | 46 |
Chris@0 | 47 #endif |
Chris@98 | 48 |
Chris@98 | 49 ProcessStatus |
Chris@98 | 50 GetProcessStatus(int pid) |
Chris@98 | 51 { |
Chris@101 | 52 #ifdef _WIN32 |
Chris@103 | 53 HANDLE handle = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid); |
Chris@101 | 54 if (!handle) { |
Chris@101 | 55 return ProcessNotRunning; |
Chris@101 | 56 } else { |
Chris@101 | 57 CloseHandle(handle); |
Chris@101 | 58 return ProcessRunning; |
Chris@101 | 59 } |
Chris@101 | 60 #else |
Chris@101 | 61 if (kill(getpid(), 0) == 0) { |
Chris@101 | 62 if (kill(pid, 0) == 0) { |
Chris@101 | 63 return ProcessRunning; |
Chris@101 | 64 } else { |
Chris@101 | 65 return ProcessNotRunning; |
Chris@101 | 66 } |
Chris@101 | 67 } else { |
Chris@98 | 68 return UnknownProcessStatus; |
Chris@98 | 69 } |
Chris@98 | 70 #endif |
Chris@98 | 71 } |
Chris@98 | 72 |