From: Zhao Lei <zhao...@cn.fujitsu.com> qemu havn't cleanup old pidfile before write new:
# echo "0000000000" > mypid # cat mypid 0000000000 # # qemu-system-x86_64 -pidfile ./mypid Could not initialize SDL(No available video device) - exiting # cat mypid 29788 0000 # Can be fixed by adding O_TRUNC in open. Signed-off-by: Zhao Lei <zhao...@cn.fujitsu.com> --- os-posix.c | 2 +- os-win32.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/os-posix.c b/os-posix.c index cb2a7f7..3509407 100644 --- a/os-posix.c +++ b/os-posix.c @@ -309,7 +309,7 @@ int qemu_create_pidfile(const char *filename) int len; int fd; - fd = qemu_open(filename, O_RDWR | O_CREAT, 0600); + fd = qemu_open(filename, O_RDWR | O_CREAT | O_TRUNC, 0600); if (fd == -1) { return -1; } diff --git a/os-win32.c b/os-win32.c index 5f95caa..c783bb5 100644 --- a/os-win32.c +++ b/os-win32.c @@ -119,7 +119,7 @@ int qemu_create_pidfile(const char *filename) memset(&overlap, 0, sizeof(overlap)); file = CreateFile(filename, GENERIC_WRITE, FILE_SHARE_READ, NULL, - OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (file == INVALID_HANDLE_VALUE) { return -1; -- 1.8.5.1