La mia app deve creare un socket di sistema (unico indipendentemente dal numero di utenti sul Mac). Sto usando un * .plist a tal fine:
<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>
Recentemente ho avuto un bug report che è stato abbastanza doloroso da eseguire il debug, e alla fine è apparso che l'errore era dovuto all'utente che non aveva una directory /var/tmp
. Quindi le mie domande sono:
- che cosa posso fare per ottenere messaggi di errore più significativi quando non è possibile creare il socket?
- cosa posso fare per ottenere la directory creata se non esiste?
- è
/var/tmp
il posto giusto per tali socket? Dovrei invece optare per/tmp
? O qualche altra directory?
Modifica
FWIW, ho appena notato che in /var/run
sembrano esserci alcuni socket, alcuni abbastanza importanti da considerare il Mac non utilizzabile se mancasse la directory.
$ 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