mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-11 16:00:50 -07:00
fix pidfile option to work in WIN32
Explicit read/write locking pidfile under WIN32 is bit extreme nobody get the chance to read the pidfile. Convert to a write-only lock. Also, creating pidfile was disabled along with daemonize under WIN32. Enable it, but do not enable daemon support which doesn't exist under WIN32 atm. From: Juha Riihimäki <juha.riihimaki@nokia.com> Signed-off-by: Juha Riihimäki <juha.riihimaki@nokia.com> Signed-off-by: Riku Voipio <riku.voipio@nokia.com> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
parent
1e8b27ca85
commit
099fe236d5
2 changed files with 5 additions and 12 deletions
13
osdep.c
13
osdep.c
|
|
@ -133,25 +133,16 @@ int qemu_create_pidfile(const char *filename)
|
|||
return -1;
|
||||
#else
|
||||
HANDLE file;
|
||||
DWORD flags;
|
||||
OVERLAPPED overlap;
|
||||
BOOL ret;
|
||||
memset(&overlap, 0, sizeof(overlap));
|
||||
|
||||
/* Open for writing with no sharing. */
|
||||
file = CreateFile(filename, GENERIC_WRITE, 0, NULL,
|
||||
file = CreateFile(filename, GENERIC_WRITE, FILE_SHARE_READ, NULL,
|
||||
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
|
||||
if (file == INVALID_HANDLE_VALUE)
|
||||
return -1;
|
||||
|
||||
flags = LOCKFILE_EXCLUSIVE_LOCK | LOCKFILE_FAIL_IMMEDIATELY;
|
||||
overlap.hEvent = 0;
|
||||
/* Lock 1 byte. */
|
||||
ret = LockFileEx(file, flags, 0, 0, 1, &overlap);
|
||||
if (ret == 0)
|
||||
return -1;
|
||||
|
||||
/* Write PID to file. */
|
||||
len = snprintf(buffer, sizeof(buffer), "%ld\n", (long)getpid());
|
||||
ret = WriteFileEx(file, (LPCVOID)buffer, (DWORD)len,
|
||||
&overlap, NULL);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue