Не зря я тренировался с трюком от
ivan_gandhi в
дайте двеThere is a way to get the output of a running process. But it should be considered a hack:
Let's say the PID of the process is 22499:
~$ touch log
~$ gdb -p 22499
(gdb) p close(1) # This closes the stdout of the running process
(gdb) p open("/home/.../log", 1) # This will open the log-file with O_WRITE
(gdb) c
Как раз сегодня gdb помог выяснить причину странного зависона при выводе в консоль:
имеется ппрога 1, которая вызывает прогу 2, которая вызывает мою консольную прогу.
И моя прога падает в тот момент, где выводится hello-образная хрень в консоль.
Backtrace (bt) показал, что висим в недрах системной функции Write из libc.
Если отключить весь консольный вывод, всё это (CENSORED) работает.
Вообще моя прога работает сама по себе, а также если просто взять запустить руками прогу 2, которая запускает мою прогу.
Что это может значить? Пайпы что ли где-то отсоединились?