0

プログラム全体を終了せずにループを終了させるコードの一部があるかどうか理解できないコードがあります。

コードは次のとおりです。

/* per-packet event loop */
while (true)
{
  perf_push (PERF_EVENT_LOOP);

  /* wait on tun/socket list */
  multi_get_timeout (&multi, &multi.top.c2.timeval);
  status = multi_tcp_wait (&multi.top, multi.mtcp);
  MULTI_CHECK_SIG (&multi);

  /* check on status of coarse timers */
  multi_process_per_second_timers (&multi);

  /* timeout? */
  if (status > 0)
  {
    /* process the I/O which triggered select */
    multi_tcp_process_io (&multi);
    MULTI_CHECK_SIG (&multi);
  }
  else if (status == 0)
  {
    multi_tcp_action (&multi, NULL, TA_TIMEOUT, false);
  }

  perf_pop ();
}
  /* shut down management interface */
 uninit_management_callback_multi (&multi);

最後の行に到達できますか?

4

2 に答える 2

4

マクロの定義を見てくださいMULTI_CHECK_SIG。私はグーグルで検索し、ステートメントを含むMULTI_CHECK_SIG別のマクロに関する定義を見つけました。EVENT_LOOP_CHECK_SIGNALbreak

于 2012-07-18T06:41:59.020 に答える
1

ループには終わりがないように見えます。これは、組み込みシステムのプログラミングでよくあることです。その後、電源を切断することでループを終了します。ハードウェアは動作を停止できないため、終了条件のないループが常に存在します。Linux(およびその他のオペレーティングシステム)では、IPC信号機能を実装してプログラムを終了することもできます。

于 2012-07-18T06:14:48.847 に答える