Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Видимо я невнятно объясняю. Пример НАСТОЯЩЕГО демона. если пропечатается текст

Отправлено qqq 30 ноября 2007 г. 17:16
В ответ на: Ответ: Я достаточно знаком. отправлено <font color=gray>Артем</font> 30 ноября 2007 г. 16:06


#include
#include

int main(void)
{
int fd;
// создаем новый процесс и закрываем родительский
if (fork()!=0) return 0;
printf("Start daemon\n");

// закрываем все открытые файлы, в том числе и дескрипторы
// ввода-вывода (они передаются процессу системой)
for (fd=0;fd // делаем процесс главным в группе процессов
setsid();

// здесь можно например открыть пассивное TCPIP подключение,
// т.е. запустить некий сервер.....

// имитируем напряженную работу
while(1) sleep(100);

return 0;
}

компилируем программу:
gcc my_daemon.c -o my_daemon

запускаем ...

если теперь посмотреть на процессы - команда ps -Al, то увидим что процесс my_daemon:
1. Не имеет терминала (столбец tty), соответственно и не имеет потоков ввода-вывода.
2. Идентификатор родительского процесса равен 1, хотя на самом деле мы запускали его с терминала (процесс №??).

При запуске программы через терминал, система передает программе дескрипторы стандартного вводы/вывода, которые используются для функций printf, scanf.



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 12:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru