Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 07.06.2011, 16:36   #1 (permalink)
Anya)
Новичок
 
Регистрация: 07.06.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите закончить программу под линукс

Нужно написать демон под линукс который бы проверял заданий каталог каждые 3 мин. на придет наличия ,отсутствия и модификации файлов и записывал результаты в лог файл (лудше всего что б было 2 отдельных процесса которые вели б 2 отдельных лога) был написан демон
но как заставить выполнять нужное мне действия вместо выполнения команды я не знаю с линуксом дела не имела (((

склет демона :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/time.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <syslog.h>

int Daemon(void);
char* getTime();
int writeLog(char msg[256]);
char* getCommand(char command[128]);

char* getTime() { //функция возвращает форматированную дату и время
time_t now;
struct tm *ptr;
static char tbuf[64];
bzero(tbuf,64);
time(&now);
ptr = localtime(&now);
strftime(tbuf,64, "%Y-%m-%e %H:%M:%S", ptr);
return tbuf;
}

char* getCommand(char command[128]) { //функция возвращает результат выполнения linux команды
FILE *pCom;
static char comText[256];
bzero(comText, 256);
char buf[64];
pCom = popen(command, "r");
if(pCom == NULL) {
writeLog("Error Command");
return "";
}
strcpy(comText, "");
while(fgets(buf, 64, pCom) != NULL) {
strcat(comText, buf);
}
pclose(pCom);
return comText;
}

int writeLog(char msg[256]) { //функция записи строки в лог
FILE * pLog;
pLog = fopen("/home/CENTRAL/skan/daemon/daemon.log", "a");
if(pLog == NULL) {
return 1;
}
char str[312];
bzero(str, 312);
strcpy(str, getTime());
strcat(str, " ==========================\n");
strcat(str, msg);
strcat(str, "\n");
fputs(str, pLog);
//fwrite(msg, 1, sizeof(msg), pLog);
fclose(pLog);
return 0;
}

int main(int argc, char* argv[]) {
writeLog("Daemon Start");

pid_t parpid, sid;

parpid = fork(); //создаем дочерний процесс
if(parpid < 0) {
exit(1);
} else if(parpid != 0) {
exit(0);
}
umask(0);//
sid = setsid();//генерируем уникальный индекс процесса
if(sid < 0) {
exit(1);
}
if((chdir("/")) < 0) {
exit(1);
}
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);

return Daemon();
}

int Daemon(void) {
char *log;
while(1) {
log = getCommand("who");
if(strlen(log) > 5) {
writeLog(log);
}
sleep(600);
}
return 0;
}
Anya) вне форума   Ответить с цитированием

Старый 07.06.2011, 16:36
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Просмотр аналогичных топиков может сыграть большую роль в решении проблемы

Помогите написать программу
Закончить синтаксический анализатор логических выражений
Помогите закончить проект в Visual Studio 2010
Помогите написать программу на С++

Старый 07.06.2011, 16:43   #2 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Могу вам помочь, но не за спасибо. Обращайтесь в ЛС.
Long Cat вне форума   Ответить с цитированием
Старый 07.06.2011, 17:08   #3 (permalink)
Anya)
Новичок
 
Регистрация: 07.06.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Ну в ЛС я пока писать не могу да и с вебмани в городе у меня всё грустно к сожалению (
Anya) вне форума   Ответить с цитированием
Старый 07.06.2011, 17:25   #4 (permalink)
Anya)
Новичок
 
Регистрация: 07.06.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

будим надеятся что кто - то смилуется эхх)
Anya) вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 08:18.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.