Mi aplicación necesita crear un socket para todo el sistema (único independientemente del número de usuarios en la Mac). Estoy usando un * .plist para este fin:
<key>Sockets</key>
<dict>
<key>Listener</key>
<dict>
<key>SockPathMode</key>
<integer>438</integer><!-- 0666 -->
<key>SockPathName</key>
<string>/var/tmp/myApp.socket</string>
</dict>
</dict>
Recientemente tuve un informe de error que fue bastante doloroso de depurar, y finalmente pareció que la falla se debió a que el usuario no tenía un directorio /var/tmp
. Así que mis preguntas son:
- ¿Qué puedo hacer para obtener mensajes de error más significativos cuando no se puede crear el Socket?
- ¿qué puedo hacer para crear el directorio si no existe?
- ¿
/var/tmp
es el lugar correcto para tales sockets? ¿Debo ir por/tmp
en su lugar? ¿O algún otro directorio?
EDITAR
FWIW, acabo de notar que en /var/run
parece haber bastantes tomas, algunas lo suficientemente importantes como para que pueda considerar que la Mac no será utilizable si falta el directorio.
$ ls -l /var/run
total 88
-rw------- 1 root daemon 0 19 jan 15:24 automount.initialized
drwxr-xr-x 3 _assetcache _assetcache 96 19 jan 15:26 com.apple.AssetCache
---------- 1 root daemon 0 19 jan 15:24 com.apple.WindowServer.didRunThisBoot
-rw------- 1 root daemon 4 22 jan 11:14 com.apple.dt.instruments.servicehub_63755_505.pid
-r-------- 1 root daemon 0 19 jan 15:24 com.apple.loginwindow.didRunThisBoot
-r-------- 1 root daemon 0 19 jan 15:24 com.apple.mdmclient.daemon.didRunThisBoot
-rw------- 1 root daemon 0 20 jan 12:16 com.apple.parentalcontrols.webfilterctl.mutex
-rw-r--r-- 1 root daemon 0 20 jan 11:48 com.apple.softwareupdate.availableupdatesupdated
drwxr-xr-x 3 root daemon 96 19 jan 15:29 com.apple.xpc.smd
srwxrwxrwx 1 root daemon 0 19 jan 15:24 cupsd
-rw-r--r-- 1 root daemon 3 19 jan 15:24 diskarbitrationd.pid
drwxr-xr-x 3 _displaypolicyd _displaypolicyd 96 19 jan 15:24 displaypolicyd
lrwxr-xr-x 1 root daemon 57 22 jan 11:44 docker.sock -> /Users/akim/Library/Containers/com.docker.docker/Data/s60
-rw-r--r-- 1 root daemon 16 19 jan 15:24 fudinit
-rw-r--r-- 1 root daemon 6 21 jan 13:20 hdiejectd.pid
-rw-r--r-- 1 root daemon 3 19 jan 15:24 kdc.pid
srw-rw-rw- 1 root daemon 0 19 jan 15:24 mDNSResponder
drwx------ 3 root daemon 96 21 jan 13:21 mds
-rw-r--r-- 1 root daemon 3 19 jan 15:24 mds.pid
srwxrwxrwx 1 root daemon 0 19 jan 15:24 portmap.socket
srwxrwxrwx 1 root daemon 0 19 jan 15:24 pppconfd
drwxr-xr-x 4 root daemon 128 19 jan 15:24 racoon
-rw-r--r-- 1 root daemon 4 19 jan 15:24 racoon.pid
-rw-r--r-- 1 root daemon 379 22 jan 13:30 resolv.conf
srw-rw-rw- 1 root daemon 0 19 jan 15:24 syslog
-rw-r--r--@ 1 root daemon 3 19 jan 15:24 syslog.pid
-r--r--r-- 1 root daemon 0 19 jan 15:24 systemkeychaincheck.done
srw-rw-rw- 1 root daemon 0 19 jan 15:24 systemkeychaincheck.socket
srwxrwxrwx 1 root daemon 0 19 jan 15:24 usbmuxd
-rw-r--r--@ 1 root daemon 5652 22 jan 11:44 utmpx
srw------- 1 root daemon 0 19 jan 15:24 vpncontrol.sock
-rw-r--r-- 1 root wheel 0 19 jan 15:24 wifi