void doWork(int position, int position1){ char buf[4096]; char buf1[4096]; char temp[20]; struct sigaction sa; sigset_t sigsetMask; buf[0] = '\0'; sigfillset(&sigsetMask); sigdelset(&sigsetMask, SIGUSR1); sigprocmask( SIG_BLOCK, &sigsetMask, NULL); memset(&sa, 0, sizeof(sa)); sa.sa_handler = &ChildSignalHandler; CHECK(sigaction(SIGUSR1, &sa, NULL) == 0); while(quit){ lockSem(position); read_((char*)&buf1); //precita obsah pamate sprintf((char*)&temp, "%u\n", getpid()); ///vytvori string z PID // fprintf(stderr, "PID:%s", temp); strcat((char*)&buf, (char*)&buf1); //spoji dokopy // fprintf(stderr, "@SHARED:%s", buf); strcat((char*)&buf, (char*)&temp); // fprintf(stderr, "2SHARED:%s", buf); write_((char*)&buf, strlen(buf)); sleep(1); unlockSem(position1); buf[0] = '\0'; //premazanie } fprintf(stderr, "Killed %u\n", getpid()); }
int writeFd(LOG_OPT* pLogOpt, const char* data) { int fd = 0; time_t tnow; struct tm tm; struct tm* ptm; struct stat l_stat; char time_buf[MAX_TIME_MSG_LEN] = {0}; char* pFileName = NULL; char msg[MAX_SINGLE_MSG_LEN] = {0}; if (NULL == data|| strlen(data) <= 0) return 0; tnow = time(NULL); ptm = localtime_r(&tnow, &tm); strftime(time_buf, sizeof(time_buf), TIME_FORMAT, ptm); snprintf(msg, sizeof(msg), "%s%s%s", time_buf, data, LOG_EOL); if (pLogOpt->sem_flag) lockSem(pLogOpt->sem_id); if (0 == pLogOpt->is_daemon){ printf("%s", msg); } if (-1 == write(pLogOpt->file_fd, msg, strlen(msg))){ if (pLogOpt->file_name){ fd = open(pLogOpt->file_name, O_WRONLY|O_APPEND|O_CREAT, 0666); if (fd > 0){ write(pLogOpt->file_fd, msg, strlen(msg)); pLogOpt->file_fd = fd; } } } if (pLogOpt->sem_flag) unlockSem(pLogOpt->sem_id); if (NULL != pLogOpt->file_name && pLogOpt->max_size > 0){ stat(pLogOpt->file_name, &l_stat); if (l_stat.st_size > pLogOpt->max_size){ close(pLogOpt->file_fd); free(pLogOpt->file_name); if (NULL == (pFileName = (char*)calloc(1, MAX_LOG_PATH_LEN * sizeof(char)))){ pLogOpt->err_code = LOG_ERR_MALLOC_NULL; return -1; } getFileName(pFileName); if ((fd = open(pLogOpt->file_name, O_WRONLY|O_APPEND|O_CREAT, 0666)) < 0){ pLogOpt->err_code = LOG_ERR_FD_WRONG; return -1; } pLogOpt->file_fd = fd; pLogOpt->file_name = pFileName; } } if (pLogOpt->sock_type == LOG_TYPE_TCP || pLogOpt->sock_type == LOG_TYPE_UDP || pLogOpt->sock_type == LOG_TYPE_FUN) return writeSock(pLogOpt, msg); return 0; }
int openMemory(mymemory * mem) { return lockSem(mem->semDescr,mem->semId); }