2016-07-26 2 views
-1

Я играл на своей виртуальной машине с некоторыми трюками, использующими эксплойты, когда я натолкнулся на этот скрипт, который печатал до 2 строк, а затем вышел в приглашение, а через 10 секунд он напечатал в моей подсказке, как это:print to linux prompt из фонового процесса

[!] Wait for the "Done" message (even if you'll get the prompt back). 
[email protected]:~/tests$ [+] Done! Now run ./exp 

Как это возможно? Это клон вовлечен или что-то в этом роде?

ответ

1

Программа информирует вас о том, что вы должны дождаться сообщения "Done", даже если вы получите приглашение назад ранее.

Это потому, что какой-то другой процесс работает, отсоединен, в фоновом режиме.

Процесс, который вы начали, завершился, поэтому вы получаете приглашение обратно. Но он породил другой (фоновый) процесс, например. через fork() или какой-либо другой механик. Когда вы вернетесь назад, этот другой процесс все еще запущен, и вам будет предложено дождаться его завершения.

Когда он это делает, он печатает "Done" на стандартный вывод (stdout), который унаследовал от его родителя - который по умолчанию является тем же самым терминалом, который вы использовали для запуска начального процесса.

Не самый гладкий дизайн - основной процесс может дождаться, пока процесс не завершит до, что даст вам подсказку назад, так как очевидно, что другой процесс заканчивается перед продолжением. Возможно, автор не знал, как это сделать. ;-)

+0

thx man didn; t знал, что stdout все еще используется, так как я всегда использовал 'nohup' и' screen'. – 123onetwothree

0

Процесс, ответственный за печать сообщений, работает в фоновом режиме (background process).

В общем, работает процесс, в фоне средства снятия только в stdin, в stdout и stderr по-прежнему связан с фактической родительской оболочкой, так что все выходы все еще видны на терминале.

 Смежные вопросы

  • Нет связанных вопросов^_^