コード例 #1
0
ファイル: crond.c プロジェクト: K0T0LI/busybox
static void RunJobs(void)
{
	CronFile *file;
	CronLine *line;

	for (file = FileBase; file; file = file->cf_Next) {
		if (file->cf_Ready) {
			file->cf_Ready = 0;

			for (line = file->cf_LineBase; line; line = line->cl_Next) {
				if (line->cl_Pid < 0) {

					RunJob(file->cf_User, line);

					crondlog("\010USER %s pid %3d cmd %s\n",
						file->cf_User, line->cl_Pid, line->cl_Shell);
					if (line->cl_Pid < 0) {
						file->cf_Ready = 1;
					}
					else if (line->cl_Pid > 0) {
						file->cf_Running = 1;
					}
				}
			}
		}
	}
}
コード例 #2
0
static void RunJobs(void)
{
	CronFile *file;
	CronLine *line;

	for (file = FileBase; file; file = file->cf_Next) {
		if (!file->cf_Ready)
			continue;

		file->cf_Ready = 0;
		for (line = file->cf_LineBase; line; line = line->cl_Next) {
			if (line->cl_Pid >= 0)
				continue;

			RunJob(file->cf_User, line);
			crondlog(LVL8 "USER %s pid %3d cmd %s",
				file->cf_User, (int)line->cl_Pid, line->cl_Shell);
			if (line->cl_Pid < 0) {
				file->cf_Ready = 1;
			} else if (line->cl_Pid > 0) {
				file->cf_Running = 1;
			}
		}
	}
}
コード例 #3
0
ファイル: database.c プロジェクト: alepharchives/dcron
void
RunJobs(void)
{
	CronFile *file;
	CronLine *line;

	for (file = FileBase; file; file = file->cf_Next) {
		if (file->cf_Ready) {
			file->cf_Ready = 0;

			for (line = file->cf_LineBase; line; line = line->cl_Next) {
				if (line->cl_Pid == -1) {

					RunJob(file, line);

					printlogf(LOG_INFO, "FILE %s/%s USER %s PID %3d %s\n",
							file->cf_DPath,
							file->cf_FileName,
							file->cf_UserName,
							line->cl_Pid,
							line->cl_Description
						);
					if (line->cl_Pid < 0)
						/* QUESTION how could this happen? RunJob will leave cl_Pid set to 0 or the actual pid */
						file->cf_Ready = 1;
					else if (line->cl_Pid > 0)
						file->cf_Running = 1;
				}
			}
		}
	}
}
コード例 #4
0
//static method
void 
RequestHandler::dispatchClientRequest(int clientfd)
{
    ssize_t n;
    char line[4096]={0};
    char *requestData = NULL;
    //while( (n=read(clientfd,line,4096))>0 )
    if( (n=read(clientfd,line,4096))>0 )
    {
    	cout<<"[DEBUG] recv:"<<line<<endl;
		line[n]=0;
		if(line[n-1] == 0x0a || line[n-1] == 0x0d)
		{
			line[n-1] = 0;
		}
		//requestData = (char*)malloc(strlen(line)+1);
		requestData = (char*)malloc(strlen(line)+1);
		memset(requestData,0,strlen(line)+1);
		strncpy(requestData,line,strlen(line));

		/* dispatch job depends on requestData */
		if( strcasestr(requestData,"sql="))
		{
			char *sql = requestData + strlen("sql=");
			RunJob(clientfd,m_QueryDBJob,sql);
		}
		else if(strcasestr(requestData,"file="))
		{
			char *file = requestData + strlen("file=");
			RunJob(clientfd,m_GetFileJob,file);
		}
		else
		{
			Logger("request data format error!\n");	
			write(clientfd,"request data format error!\n",27);	
			close(clientfd);
		}
    }
    if(n == 0)
    {
    	Logger("client disconnect\n");
    }
}
コード例 #5
0
ファイル: JobManager.cpp プロジェクト: 2bitdreamer/SD6_Engine
void JobManager::Update()
{
	if (m_threads.empty()) {
		RunJob();
	}

	Job* finished_job;
	while (m_finished_jobs.dequeue(&finished_job)) {
		if (finished_job->m_onCompleteCB != nullptr) {
			finished_job->m_onCompleteCB(finished_job->arg);
		}

		delete finished_job;
	}
}
コード例 #6
0
ファイル: simq.c プロジェクト: AndrewCRMartin/simq
/*>BOOL RunNextJob(char *queueDir, int verbose)
   --------------------------------------------
*//**
   \param[in]  queueDir   The queue directory
   \param[in]  verbose    Verbosty level
   \return                Were there any jobs to run?

   Find the next job in the queue and run it

-  16.10.15  Original   By: ACRM
*/
BOOL RunNextJob(char *queueDir, int verbose)
{
   BOOL retVal = FALSE;
   int  nJobs,
        jobID;

   /* List the directory                                                */
   nJobs = FindJobs(queueDir, JOB_OLDEST, &jobID);

   if(nJobs)
   {
      /* Run the job                                                    */
      RunJob(queueDir, jobID, verbose);
      retVal = TRUE;
   }
   else if(verbose >= 2)
   {
      Message(PROGNAME, MSG_INFO, "No jobs waiting");
   }
   return(retVal);
}
コード例 #7
0
ファイル: mini_loop.cpp プロジェクト: sijianwudi/varlib
bool MiniLoop::DeferOrRunPendingJob(PendingJob pending_job)
{
    Job* job = pending_job.job;
    RunJob(job);
    return true;
}