Невозможно заставить работать псевдонимы [дублировать]

Si esto fuera Linux, también podría usar un truco gdb. Pero resulta que podemos descartar ese truco en OS X, porque se basa en el comportamiento específico de Linux -de/dev/fd/(/proc/self/fd/).

Eso es todo lo que sé, no tengo una sugerencia positiva.

Podría salir terriblemente mal, pero ¿ha considerado gdb? ¡Dos milagros en un paquete :un intérprete de C y una forma de inyectar código en el proceso de su elección! Aparentemente, también puede usarlo para depurar.

Afortunadamente, la biblioteca estándar de C también incluye una función que interpreta scripts. El lenguaje de secuencias de comandos en su plataforma puede ser más conveniente para escribir que C...

Pensé en un script que usa lesspara OS X. Este es un truco frágil para volver al inicio del archivo de registro basado en OS X, bash :funciona menos en descriptores de archivos abiertos, cat no Después de leer todo el archivo de registro con less, la posición de FD debería estar al final del archivo, que con suerte es la posición original antes de que nos entrometiéramos con él.

Pero solo funciona si el archivo también se abrió para lectura. De acuerdo con su salida lsof, el archivo solo estaba abierto para escritura.

gdb -p 264 </tmp/log 2>&1; less /dev/fd/20")
EOF

Lancé el tipo de devolución porque, de lo contrario, mi sistema se quejó de que no conocía el tipo de devolución de system(). Presumiblemente, esto también significa que tampoco estaba seguro de los tipos de argumento, por lo que ya suena como una gran idea.

El uso de system()para manipular los descriptores de archivos funcionó de alguna manera cuando lo probé en mi caja de Linux... una vez. No prometo que siempre funcionará :). Por ejemplo, técnicamente no se garantiza que esto sea seguro si el programa está ejecutando un controlador de señales, o de hecho system()en sí mismo.(system()no es una de las pocas funciones que se garantiza que sea "re -participante" ).

-2
08.11.2017, 07:14
0 ответов

Теги

Похожие вопросы