Я использовал другой ffserver.conf
нашел здесь , чтобы эта работа работала:
Port 8090
# bind to all IPs aliased or not
BindAddress 0.0.0.0
# max number of simultaneous clients
MaxClients 1000
# max bandwidth per-client (kb/s)
MaxBandwidth 10000
# Suppress that if you want to launch ffserver as a daemon.
NoDaemon
File /tmp/feed1.ffm
FileMaxSize 5M
Feed feed1.ffm
Format swf
VideoCodec flv
VideoFrameRate 15
VideoBufferSize 80000
VideoBitRate 100
VideoQMin 1
VideoQMax 5
VideoSize 352x288
PreRoll 0
Noaudio
Puede hacer esto en Linux. Digamos que hay un guións
:
#!/bin/bash
i=0
echo my pid: "$$"
while true; do
echo "$i"; ((i++)); sleep 1;
done
Ejecútalo:
$./s
my pid: 8815
0
1
2
Y así sigue... Ahora necesita gdb
para adjuntar al proceso.
gdb -p 8815
Ahora estás en gdb
. Aquí haz esto:
p close(1)
Esto ha cerrado el descriptor de archivo STDOUT. Ahora abre uno nuevo:
p creat("/tmp/8815.out", 0600)
En otra terminal ya puedes configurar el proceso de lectura:
tail -f /tmp/8815.out
Todavía no llega nada, ya que debe desconectarse de gdb
en la otra terminal. Ya sea Ctl + D , o:
q
Quit anyway? (y or n)
Confirme con y
y Introduzca . Y ahora deberías ver (donde tail
se está ejecutando )algo como esto:
173
174
175
Si prefiere usar un archivo o tubería ya existente, hágalo engdb
:
p open("/path/to/your/output", 1)
Esto ilustra la redirección de STDOUT. Es similar con STDERR, solo que tiene el número 2.
Usé estas dos respuestas:
Puede usar tee
cuando inicie el programa. Si está usando bash, puede hacer:
program > >(tee -a log.txt)
Eso redirigirá la salida estándar de program
a una sustitución de proceso que ejecuta tee
. Eso esencialmente escribe una copia de la salida estándar de program
a log.txt
. tee
continuará enviando la salida estándar a donde sea que vaya antes, probablemente la terminal dependiendo de cómo funcione program
.