diff options
author | Rainer Keller <rainer.keller@digia.com> | 2013-04-17 11:17:16 +0200 |
---|---|---|
committer | Rainer Keller <rainer.keller@digia.com> | 2013-04-17 11:17:16 +0200 |
commit | 50ce1cef0f7b50d3fdfd6972cdcf419d92e3db88 (patch) | |
tree | 50ac68c695b722a146e9084747a00eac458627f2 /main.cpp | |
parent | 676eb8c6c31abaecc3d1f06da06a8e54a2a0deae (diff) |
Fix SOCK_CLOEXEC not available on Android
Diffstat (limited to 'main.cpp')
-rw-r--r-- | main.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
@@ -8,6 +8,7 @@ #include <sys/socket.h> #include <sys/un.h> #include <unistd.h> +#include <fcntl.h> #define PID_FILE "/data/user/.appcontroller" @@ -28,11 +29,15 @@ static int connectSocket() int create_socket; struct sockaddr_un address; - if ((create_socket=socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0)) < 0) { + if ((create_socket = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) { perror("Could not create socket"); return -1; } + if (fcntl(create_socket, F_SETFD, FD_CLOEXEC) == -1) { + perror("Unable to set CLOEXEC"); + } + setupAddressStruct(address); if (connect(create_socket, (struct sockaddr *) &address, sizeof (address)) != 0) { @@ -47,11 +52,15 @@ static int createServerSocket() { struct sockaddr_un address; - if ((serverSocket=socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0)) < 0) { + if ((serverSocket = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) { perror("Could not create socket"); return -1; } + if (fcntl(serverSocket, F_SETFD, FD_CLOEXEC) == -1) { + perror("Unable to set CLOEXEC"); + } + setupAddressStruct(address); if (bind(serverSocket, (struct sockaddr *) &address, sizeof (address)) != 0) { |