07.06.2011, 16:36 | #1 (permalink) |
Новичок
Регистрация: 07.06.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите закончить программу под линукс
но как заставить выполнять нужное мне действия вместо выполнения команды я не знаю с линуксом дела не имела ((( склет демона : #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; } |
07.06.2011, 16:36 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Просмотр аналогичных топиков может сыграть большую роль в решении проблемы Помогите написать программу Закончить синтаксический анализатор логических выражений Помогите закончить проект в Visual Studio 2010 Помогите написать программу на С++ |
07.06.2011, 17:25 | #4 (permalink) |
Новичок
Регистрация: 07.06.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
будим надеятся что кто - то смилуется эхх)
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|