Der Autor hat es wahrscheinlich nie probiert. Das Handbuch sagt dies über die fork
Option:
Nachdem eine Verbindung hergestellt wurde, wird der Kanal in einem untergeordneten Prozess behandelt. Der übergeordnete Prozess versucht, weitere Verbindungen herzustellen, entweder durch Abhören oder durch Verbinden in einer Schleife (Beispiel).
Das heißt, es socat
wird nicht vor dem Start der Haupthörschleife verzweigt.
Die -d
Option erhöht nur die Ausführlichkeit (wie in debug
).
tl; dr: socat
kann das nicht.
Der Quellbaum enthält dieses Hilfsskript, das socat
im Hintergrund gestartet werden soll . Sie können es an Ihre Zwecke anpassen. Ich habe dieses Skript nicht geschrieben!
#! /bin/sh # source: daemon.sh # Copyright Gerhard Rieger 2001 # Published under the GNU General Public License V.2, see file COPYING # This script assumes that you create group daemon1 and user daemon1 before. # they need only the right to exist (no login etc.) # Note: this pid file mechanism is not robust! # You will adapt these variables USER=daemon1 GROUP=daemon1 INIF=fwnonsec.domain.org OUTIF=fwsec.domain.org TARGET=w3.intra.domain.org INPORT=80 DSTPORT=80 # INOPTS="fork,setgid=$GROUP,setuid=$USER" OUTOPTS= PIDFILE=/var/run/socat-$INPORT.pid OPTS="-d -d -lm" # notice to stderr, then to syslog SOCAT=/usr/local/bin/socat if [ "$1" = "start" -o -z "$1" ]; then $SOCAT $OPTS tcp-l:$INPORT,bind=$INIF,$INOPTS tcp:$TARGET:$DSTPORT,bind=$OUTIF,$OUTOPTS </dev/null & echo $! >$PIDFILE elif [ "$1" = "stop" ]; then /bin/kill $(/bin/cat $PIDFILE) fi