亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? jobs.c

?? android-w.song.android.widget
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
  else if (temp == js.j_lastasync)    js.j_lastasync = 0;  free (temp->wd);  ndel = discard_pipeline (temp->pipe);  js.c_injobs -= ndel;  if (temp->state == JDEAD)    {      js.c_reaped -= ndel;      js.j_ndead--;      if (js.c_reaped < 0)	{#ifdef DEBUG	  itrace("delete_job (%d pgrp %d): js.c_reaped (%d) < 0 ndel = %d js.j_ndead = %d", job_index, temp->pgrp, js.c_reaped, ndel, js.j_ndead);#endif	  js.c_reaped = 0;	}    }  if (temp->deferred)    dispose_command (temp->deferred);  free (temp);  js.j_njobs--;  if (js.j_njobs == 0)    js.j_firstj = js.j_lastj = 0;  else if (jobs[js.j_firstj] == 0 || jobs[js.j_lastj] == 0)    reset_job_indices ();  if (job_index == js.j_current || job_index == js.j_previous)    reset_current ();}/* Must be called with SIGCHLD blocked. */voidnohup_job (job_index)     int job_index;{  register JOB *temp;  if (js.j_jobslots == 0)    return;  if (temp = jobs[job_index])    temp->flags |= J_NOHUP;}/* Get rid of the data structure associated with a process chain. */static intdiscard_pipeline (chain)     register PROCESS *chain;{  register PROCESS *this, *next;  int n;  this = chain;  n = 0;  do    {      next = this->next;      FREE (this->command);      free (this);      n++;      this = next;    }  while (this != chain);  return n;}/* Add this process to the chain being built in the_pipeline.   NAME is the command string that will be exec'ed later.   PID is the process id of the child. */static voidadd_process (name, pid)     char *name;     pid_t pid;{  PROCESS *t, *p;#if defined (RECYCLES_PIDS)  int j;  p = find_process (pid, 0, &j);  if (p)    {#  ifdef DEBUG      if (j == NO_JOB)	internal_warning (_("add_process: process %5ld (%s) in the_pipeline"), (long)p->pid, p->command);#  endif      if (PALIVE (p))        internal_warning (_("add_process: pid %5ld (%s) marked as still alive"), (long)p->pid, p->command);      p->running = PS_RECYCLED;		/* mark as recycled */    }#endif  t = (PROCESS *)xmalloc (sizeof (PROCESS));  t->next = the_pipeline;  t->pid = pid;  WSTATUS (t->status) = 0;  t->running = PS_RUNNING;  t->command = name;  the_pipeline = t;  if (t->next == 0)    t->next = t;  else    {      p = t->next;      while (p->next != t->next)	p = p->next;      p->next = t;    }}/* Create a (dummy) PROCESS with NAME, PID, and STATUS, and make it the last   process in jobs[JID]->pipe.  Used by the lastpipe code. */voidappend_process (name, pid, status, jid)     char *name;     pid_t pid;     int status;     int jid;{  PROCESS *t, *p;  t = (PROCESS *)xmalloc (sizeof (PROCESS));  t->next = (PROCESS *)NULL;  t->pid = pid;  /* set process exit status using offset discovered by configure */  t->status = (status & 0xff) << WEXITSTATUS_OFFSET;  t->running = PS_DONE;  t->command = name;  js.c_reaped++;	/* XXX */  for (p = jobs[jid]->pipe; p->next != jobs[jid]->pipe; p = p->next)    ;  p->next = t;  t->next = jobs[jid]->pipe;}#if 0/* Take the last job and make it the first job.  Must be called with   SIGCHLD blocked. */introtate_the_pipeline (){  PROCESS *p;  if (the_pipeline->next == the_pipeline)    return;  for (p = the_pipeline; p->next != the_pipeline; p = p->next)    ;  the_pipeline = p;}/* Reverse the order of the processes in the_pipeline.  Must be called with   SIGCHLD blocked. */intreverse_the_pipeline (){  PROCESS *p, *n;  if (the_pipeline->next == the_pipeline)    return;  for (p = the_pipeline; p->next != the_pipeline; p = p->next)    ;  p->next = (PROCESS *)NULL;  n = REVERSE_LIST (the_pipeline, PROCESS *);  the_pipeline = n;  for (p = the_pipeline; p->next; p = p->next)    ;  p->next = the_pipeline;}#endif/* Map FUNC over the list of jobs.  If FUNC returns non-zero,   then it is time to stop mapping, and that is the return value   for map_over_jobs.  FUNC is called with a JOB, arg1, arg2,   and INDEX. */static intmap_over_jobs (func, arg1, arg2)     sh_job_map_func_t *func;     int arg1, arg2;{  register int i;  int result;  sigset_t set, oset;  if (js.j_jobslots == 0)    return 0;  BLOCK_CHILD (set, oset);  /* XXX could use js.j_firstj here */  for (i = result = 0; i < js.j_jobslots; i++)    {#if defined (DEBUG)      if (i < js.j_firstj && jobs[i])	itrace("map_over_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj);      if (i > js.j_lastj && jobs[i])	itrace("map_over_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj);#endif      if (jobs[i])	{	  result = (*func)(jobs[i], arg1, arg2, i);	  if (result)	    break;	}    }  UNBLOCK_CHILD (oset);  return (result);}/* Cause all the jobs in the current pipeline to exit. */voidterminate_current_pipeline (){  if (pipeline_pgrp && pipeline_pgrp != shell_pgrp)    {      killpg (pipeline_pgrp, SIGTERM);      killpg (pipeline_pgrp, SIGCONT);    }}/* Cause all stopped jobs to exit. */voidterminate_stopped_jobs (){  register int i;  /* XXX could use js.j_firstj here */  for (i = 0; i < js.j_jobslots; i++)    {      if (jobs[i] && STOPPED (i))	{	  killpg (jobs[i]->pgrp, SIGTERM);	  killpg (jobs[i]->pgrp, SIGCONT);	}    }}/* Cause all jobs, running or stopped, to receive a hangup signal.  If   a job is marked J_NOHUP, don't send the SIGHUP. */voidhangup_all_jobs (){  register int i;  /* XXX could use js.j_firstj here */  for (i = 0; i < js.j_jobslots; i++)    {      if (jobs[i])	{	  if  (jobs[i]->flags & J_NOHUP)	    continue;	  killpg (jobs[i]->pgrp, SIGHUP);	  if (STOPPED (i))	    killpg (jobs[i]->pgrp, SIGCONT);	}    }}voidkill_current_pipeline (){  stop_making_children ();  start_pipeline ();}/* Return the pipeline that PID belongs to.  Note that the pipeline   doesn't have to belong to a job.  Must be called with SIGCHLD blocked.   If JOBP is non-null, return the index of the job containing PID.  */static PROCESS *find_pipeline (pid, alive_only, jobp)     pid_t pid;     int alive_only;     int *jobp;		/* index into jobs list or NO_JOB */{  int job;  PROCESS *p;  /* See if this process is in the pipeline that we are building. */  if (jobp)    *jobp = NO_JOB;  if (the_pipeline)    {      p = the_pipeline;      do	{	  /* Return it if we found it.  Don't ever return a recycled pid. */	  if (p->pid == pid && ((alive_only == 0 && PRECYCLED(p) == 0) || PALIVE(p)))	    return (p);	  p = p->next;	}      while (p != the_pipeline);    }  job = find_job (pid, alive_only, &p);  if (jobp)    *jobp = job;  return (job == NO_JOB) ? (PROCESS *)NULL : jobs[job]->pipe;}/* Return the PROCESS * describing PID.  If JOBP is non-null return the index   into the jobs array of the job containing PID.  Must be called with   SIGCHLD blocked. */static PROCESS *find_process (pid, alive_only, jobp)     pid_t pid;     int alive_only;     int *jobp;		/* index into jobs list or NO_JOB */{  PROCESS *p;  p = find_pipeline (pid, alive_only, jobp);  while (p && p->pid != pid)    p = p->next;  return p;}/* Return the job index that PID belongs to, or NO_JOB if it doesn't   belong to any job.  Must be called with SIGCHLD blocked. */static intfind_job (pid, alive_only, procp)     pid_t pid;     int alive_only;     PROCESS **procp;{  register int i;  PROCESS *p;  /* XXX could use js.j_firstj here, and should check js.j_lastj */  for (i = 0; i < js.j_jobslots; i++)    {#if defined (DEBUG)      if (i < js.j_firstj && jobs[i])	itrace("find_job: job %d non-null before js.j_firstj (%d)", i, js.j_firstj);      if (i > js.j_lastj && jobs[i])	itrace("find_job: job %d non-null after js.j_lastj (%d)", i, js.j_lastj);#endif      if (jobs[i])	{	  p = jobs[i]->pipe;	  do	    {	      if (p->pid == pid && ((alive_only == 0 && PRECYCLED(p) == 0) || PALIVE(p)))		{		  if (procp)		    *procp = p;		  return (i);		}	      p = p->next;	    }	  while (p != jobs[i]->pipe);	}    }  return (NO_JOB);}/* Find a job given a PID.  If BLOCK is non-zero, block SIGCHLD as   required by find_job. */intget_job_by_pid (pid, block)     pid_t pid;     int block;{  int job;  sigset_t set, oset;  if (block)    BLOCK_CHILD (set, oset);  job = find_job (pid, 0, NULL);  if (block)    UNBLOCK_CHILD (oset);  return job;}/* Print descriptive information about the job with leader pid PID. */voiddescribe_pid (pid)     pid_t pid;{  int job;  sigset_t set, oset;  BLOCK_CHILD (set, oset);  job = find_job (pid, 0, NULL);  if (job != NO_JOB)    fprintf (stderr, "[%d] %ld\n", job + 1, (long)pid);  else    programming_error (_("describe_pid: %ld: no such pid"), (long)pid);  UNBLOCK_CHILD (oset);}static char *j_strsignal (s)     int s;{  char *x;  x = strsignal (s);  if (x == 0)    {      x = retcode_name_buffer;      sprintf (x, _("Signal %d"), s);    }  return x;}static char *printable_job_status (j, p, format)     int j;     PROCESS *p;     int format;{  static char *temp;  int es;  temp = _("Done");  if (STOPPED (j) && format == 0)    {      if (posixly_correct == 0 || p == 0 || (WIFSTOPPED (p->status) == 0))	temp = _("Stopped");      else	{	  temp = retcode_name_buffer;	  sprintf (temp, _("Stopped(%s)"), signal_name (WSTOPSIG (p->status)));	}    }  else if (RUNNING (j))    temp = _("Running");  else    {      if (WIFSTOPPED (p->status))	temp = j_strsignal (WSTOPSIG (p->status));      else if (WIFSIGNALED (p->status))	temp = j_strsignal (WTERMSIG (p->status));      else if (WIFEXITED (p->status))	{	  temp = retcode_name_buffer;	  es = WEXITSTATUS (p->status);	  if (es == 0)	    strcpy (temp, _("Done"));	  else if (posixly_correct)	    sprintf (temp, _("Done(%d)"), es);	  else	    sprintf (temp, _("Exit %d"), es);	}      else	temp = _("Unknown status");    }  return temp;}/* This is the way to print out information on a job if you   know the index.  FORMAT is:    JLIST_NORMAL)   [1]+ Running	   emacs    JLIST_LONG  )   [1]+ 2378 Running      emacs    -1	  )   [1]+ 2378	      emacs    JLIST_NORMAL)   [1]+ Stopped	   ls | more    JLIST_LONG  )   [1]+ 2369 Stopped      ls			 2367	    | more    JLIST_PID_ONLY)	Just list the pid of the process group leader (really	the process group).    JLIST_CHANGED_ONLY)	Use format JLIST_NORMAL, but list only jobs about which	the user has not been notified. *//* Print status for pipeline P.  If JOB_INDEX is >= 0, it is the index into   the JOBS array corresponding to this pipeline.  FORMAT is as described   above.  Must be called with SIGCHLD blocked.   If you're printing a pipeline that's not in the jobs array, like the   current pipeline as it's being created, pass -1 for JOB_INDEX */static voidprint_pipeline (p, job_index, format, stream)     PROCESS *p;     int job_index, format;     FILE *stream;{  PROCESS *first, *last, *show;  int es, name_padding;  char *temp;  if (p == 0)    return;  first = last = p;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品亚洲精品国产欧美 | 国产成人高清在线| 久久久久99精品一区| 亚洲一区二区精品视频| 色婷婷亚洲综合| 91精品国产91久久久久久最新毛片| 中文字幕一区二区视频| 伦理电影国产精品| 欧美日韩亚州综合| 亚洲一区二区视频在线观看| 91黄色免费看| 亚洲视频免费看| 99久久精品国产导航| 亚洲色图视频网| 国内精品写真在线观看| 国产欧美一区二区三区鸳鸯浴 | 日韩亚洲欧美成人一区| 轻轻草成人在线| 精品国产一二三| 亚洲国产欧美日韩另类综合| 91精品国产综合久久久久| 国产一区二区在线视频| 中文字幕亚洲在| 91麻豆精品国产自产在线| 国产精品88888| 亚洲va欧美va国产va天堂影院| 日韩欧美一级精品久久| www.日韩大片| 免费高清视频精品| 中文字幕一区二区在线观看| 欧美一区二区三区四区视频| 不卡电影免费在线播放一区| 天天色天天爱天天射综合| 欧美激情在线一区二区三区| 欧美精品在线视频| 成人美女视频在线观看18| 日韩激情在线观看| 最新日韩在线视频| 精品国产一区二区三区不卡| 欧美中文字幕亚洲一区二区va在线| 久草这里只有精品视频| 亚洲国产一区在线观看| 国产区在线观看成人精品| 欧美精品三级日韩久久| 99精品偷自拍| 国产精品99久久久久久宅男| 婷婷亚洲久悠悠色悠在线播放| 国产精品女同互慰在线看| 日韩一区二区三区高清免费看看| 99久久久无码国产精品| 国产一区二区在线视频| 亚洲成人动漫一区| 亚洲欧美日韩在线| 欧美高清在线视频| xvideos.蜜桃一区二区| 日韩免费在线观看| 欧美久久久久久久久久| 91黄色免费看| 色一情一乱一乱一91av| 国产成人免费在线| 国产综合久久久久久鬼色| 日韩av电影天堂| 亚洲mv在线观看| 亚洲午夜视频在线观看| 亚洲精品伦理在线| 中文字幕日韩一区| 国产精品日日摸夜夜摸av| 久久毛片高清国产| 日韩一区二区三区电影在线观看| 欧美日韩国产中文| 欧美专区在线观看一区| 91精品福利在线| 欧美亚洲免费在线一区| 在线观看亚洲精品| 欧美主播一区二区三区美女| 91高清视频免费看| 欧美视频一区在线观看| 欧美视频一区二区三区| 欧美日韩一区二区欧美激情| 欧美揉bbbbb揉bbbbb| 欧美午夜精品理论片a级按摩| 一本色道久久加勒比精品| 一本大道久久a久久精品综合| 91在线云播放| 色天天综合久久久久综合片| 欧美图区在线视频| 69精品人人人人| 欧美成人精品1314www| 精品免费视频一区二区| 国产午夜精品一区二区| 中文字幕中文乱码欧美一区二区| 中文字幕亚洲一区二区av在线 | 国产精品久线在线观看| ●精品国产综合乱码久久久久 | 亚洲国产精品综合小说图片区| 亚洲一级片在线观看| 日韩不卡在线观看日韩不卡视频| 日本免费新一区视频| 精品在线免费观看| 99v久久综合狠狠综合久久| 在线免费观看日韩欧美| 欧美精选在线播放| 日本一区二区三区国色天香 | 亚洲欧美另类小说| 婷婷丁香久久五月婷婷| 激情综合色播激情啊| 本田岬高潮一区二区三区| 欧美手机在线视频| 久久久三级国产网站| 日韩毛片在线免费观看| 日韩中文字幕不卡| 国产超碰在线一区| 欧美综合在线视频| 久久久91精品国产一区二区精品| 亚洲色图19p| 久久精品噜噜噜成人av农村| 不卡大黄网站免费看| 91精品免费观看| 国产精品国产三级国产aⅴ入口| 亚洲成人动漫在线免费观看| 国产成人综合网站| 欧美午夜精品一区二区蜜桃| 国产丝袜美腿一区二区三区| 亚洲一二三区视频在线观看| 国产美女娇喘av呻吟久久| 欧美在线一二三四区| 国产亚洲制服色| 婷婷综合五月天| 成人18视频在线播放| 精品国产麻豆免费人成网站| 一区二区三区在线免费播放| 激情综合五月婷婷| 欧美日韩精品久久久| 国产精品狼人久久影院观看方式| 久久精品99久久久| 欧美系列一区二区| 亚洲精品乱码久久久久久黑人| 国模娜娜一区二区三区| 8x福利精品第一导航| 亚洲欧美国产高清| 成人综合婷婷国产精品久久蜜臀 | 在线观看不卡视频| 国产欧美一区视频| 激情av综合网| 日韩视频免费观看高清完整版 | 精品国产青草久久久久福利| 亚洲成人免费电影| 欧美在线你懂得| 国产精品久久毛片av大全日韩| 久久99国产精品久久| 日韩一区二区影院| 日韩国产成人精品| 欧美日韩在线电影| 亚洲摸摸操操av| 91视频91自| ...xxx性欧美| 不卡的电影网站| 国产精品第一页第二页第三页| 国产尤物一区二区| 精品国产凹凸成av人网站| 日韩高清欧美激情| 91精品国产91综合久久蜜臀| 亚洲成人一区在线| 欧美日韩激情一区二区三区| 亚洲一级不卡视频| 欧美日韩极品在线观看一区| 亚洲大片免费看| 欧美情侣在线播放| 日韩精品一级二级| 日韩欧美一级在线播放| 久久99精品国产91久久来源| 欧美成人精品福利| 国产一区二区日韩精品| 久久久影院官网| 国产黄人亚洲片| 国产精品嫩草99a| 色美美综合视频| 亚洲国产日产av| 日韩一区二区在线看| 久久国产三级精品| 精品久久久影院| 国产精品伊人色| 亚洲欧美在线观看| 欧美综合亚洲图片综合区| 日韩国产精品大片| www激情久久| 国产成人一级电影| 亚洲欧美色图小说| 91精品中文字幕一区二区三区| 蜜桃视频在线观看一区| 久久久影视传媒| 91偷拍与自偷拍精品| 丝袜亚洲精品中文字幕一区| 亚洲精品一区二区在线观看| 成人免费视频caoporn| 亚洲一区二区三区激情| 欧美一级二级在线观看| 国产盗摄精品一区二区三区在线| 自拍偷拍欧美精品| 欧美精品日韩综合在线|