Возможный дубликат:
Linux: предотвращение остановки фонового процесса после закрытия SSH-клиента
У меня есть программа на C, с которой я обращаюсь и взаимодействую с терминалом (обычно из SSH в linux box). Я пытаюсь найти решение проблемы, когда после закрытия терминала/выхода из системы процесс заканчивается (программа в основном запрашивает некоторые варианты, а затем делает свой бизнес без дальнейшего взаимодействия, поэтому я хотел бы иметь его продолжают работать даже после выхода из системы SSH).
В Linux есть способы избежать этого, например, "экран", но я хочу сделать это программно с помощью C, не полагаясь на установленные пакеты, такие как screen-, даже если это означает переосмысление колеса.
До сих пор я понимаю fork() как стандартный тривиальный способ демонстрации процесса, так может ли кто-нибудь помочь мне закончить код, позволяющий выполнить описанный выше процесс?
Внутри родителя:
main()
{
//Do interactive stuff
signal(SIGCHLD, SIG_IGN); //stops the parent waiting for the child process to end
if(fork())
exit(0);
// and now the program continues in the child process
Теперь я могу выйти из SSH, который закрывает исходную оболочку... и ребенок продолжает свою работу!
Внутри ребенка:
//Continue with processing data/whatever the program does (no input/output to terminal required)
exit(0);