<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>Hi! In reference to <a class="moz-txt-link-freetext" href="https://github.com/jackaudio/example-clients">https://github.com/jackaudio/example-clients</a>:
      I saw the code as part of a question on Stackoverflow
      (<a class="moz-txt-link-freetext" href="http://stackoverflow.com/q/29748082/6544953">http://stackoverflow.com/q/29748082/6544953</a>). Would it be
      possible to include the source code below as an example? <br>
    </p>
    <ul>
      <li>There's already a midi controlled synth application in that
        repo (midisine.c). But I feel the example demonstrates in a
        clearer way how to send audio to the sound card's stereo output,
        because it just uses audio data, not audio data plus midi
        handling. <br>
      </li>
      <li>There's also the simple client example (simple_client.c), but
        that one (effectively) handles bi-directional audio data
        streaming. This client just sends audio data which makes it
        clearer how to use data output (and, by implication, data
        input).</li>
    </ul>
    <p>Long story in short - this example is clearer to n00bs (like me).<br>
    </p>
    <p>Thank you for your consideration!<br>
    </p>
    <p><br>
    </p>
    <p>
      <blockquote type="cite">
        <pre style="" class="default prettyprint prettyprinted"><code><span class="com">/** @file simple_client.c
*
* @brief This simple client demonstrates the basic features of JACK
* as they would be used by many applications.
*/</span><span class="pln">

</span><span class="com">#include</span><span class="pln"> </span><span class="str"><stdio.h></span><span class="pln">
</span><span class="com">#include</span><span class="pln"> </span><span class="str"><errno.h></span><span class="pln">
</span><span class="com">#include</span><span class="pln"> </span><span class="str"><stdlib.h></span><span class="pln">
</span><span class="com">#include</span><span class="pln"> </span><span class="str"><string.h></span><span class="pln">
</span><span class="com">#include</span><span class="pln"> </span><span class="str"><math.h></span><span class="pln">
</span><span class="com">#include</span><span class="pln"> </span><span class="str"><signal.h></span><span class="pln">
</span><span class="com">#ifndef</span><span class="pln"> WIN32
</span><span class="com">#include</span><span class="pln"> </span><span class="str"><unistd.h></span><span class="pln">
</span><span class="com">#endif</span><span class="pln">
</span><span class="com">#include</span><span class="pln"> </span><span class="str"><jack/jack.h></span><span class="pln">

</span><span class="typ">jack_port_t</span><span class="pln"> </span><span class="pun">*</span><span class="pln">output_port1</span><span class="pun">,</span><span class="pln"> </span><span class="pun">*</span><span class="pln">output_port2</span><span class="pun">;</span><span class="pln">
</span><span class="typ">jack_client_t</span><span class="pln"> </span><span class="pun">*</span><span class="pln">client</span><span class="pun">;</span><span class="pln">

</span><span class="com">#ifndef</span><span class="pln"> M_PI
</span><span class="com">#define</span><span class="pln"> M_PI  </span><span class="pun">(</span><span class="lit">3.14159265</span><span class="pun">)</span><span class="pln">
</span><span class="com">#endif</span><span class="pln">

</span><span class="com">#define</span><span class="pln"> TABLE_SIZE   </span><span class="pun">(</span><span class="lit">200</span><span class="pun">)</span><span class="pln">
</span><span class="kwd">typedef</span><span class="pln"> </span><span class="kwd">struct</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">float</span><span class="pln"> sine</span><span class="pun">[</span><span class="pln">TABLE_SIZE</span><span class="pun">];</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> left_phase</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> right_phase</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
paTestData</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> signal_handler</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> sig</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    jack_client_close</span><span class="pun">(</span><span class="pln">client</span><span class="pun">);</span><span class="pln">
    fprintf</span><span class="pun">(</span><span class="pln">stderr</span><span class="pun">,</span><span class="pln"> </span><span class="str">"signal received, exiting ...\n"</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">exit</span><span class="pun">(</span><span class="lit">0</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">/**
* The process callback for this JACK application is called in a
* special realtime thread once for each audio cycle.
*
* This client follows a simple rule: when the JACK transport is
* running, copy the input port to the output.  When it stops, exit.
*/</span><span class="pln">

</span><span class="kwd">int</span><span class="pln">
process</span><span class="pun">(</span><span class="typ">jack_nframes_t</span><span class="pln"> nframes</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> </span><span class="pun">*</span><span class="pln">arg</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="typ">jack_default_audio_sample_t</span><span class="pln"> </span><span class="pun">*</span><span class="pln">out1</span><span class="pun">,</span><span class="pln"> </span><span class="pun">*</span><span class="pln">out2</span><span class="pun">;</span><span class="pln">
    paTestData </span><span class="pun">*</span><span class="pln">data </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">paTestData</span><span class="pun">*)</span><span class="pln">arg</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> i</span><span class="pun">;</span><span class="pln">

    out1 </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">jack_default_audio_sample_t</span><span class="pun">*)</span><span class="pln">jack_port_get_buffer</span><span class="pun">(</span><span class="pln">output_port1</span><span class="pun">,</span><span class="pln"> nframes</span><span class="pun">);</span><span class="pln">
    out2 </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">jack_default_audio_sample_t</span><span class="pun">*)</span><span class="pln">jack_port_get_buffer</span><span class="pun">(</span><span class="pln">output_port2</span><span class="pun">,</span><span class="pln"> nframes</span><span class="pun">);</span><span class="pln">

    </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="pln">i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i</span><span class="pun"><</span><span class="pln">nframes</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        out1</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> data</span><span class="pun">-></span><span class="pln">sine</span><span class="pun">[</span><span class="pln">data</span><span class="pun">-></span><span class="pln">left_phase</span><span class="pun">];</span><span class="pln">  </span><span class="com">// left </span><span class="pln">
        out2</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> data</span><span class="pun">-></span><span class="pln">sine</span><span class="pun">[</span><span class="pln">data</span><span class="pun">-></span><span class="pln">right_phase</span><span class="pun">];</span><span class="pln">  </span><span class="com">// right </span><span class="pln">
        data</span><span class="pun">-></span><span class="pln">left_phase </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">data</span><span class="pun">-></span><span class="pln">left_phase </span><span class="pun">>=</span><span class="pln"> TABLE_SIZE</span><span class="pun">)</span><span class="pln"> data</span><span class="pun">-></span><span class="pln">left_phase </span><span class="pun">-=</span><span class="pln"> TABLE_SIZE</span><span class="pun">;</span><span class="pln">
        data</span><span class="pun">-></span><span class="pln">right_phase </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">10</span><span class="pun">;</span><span class="pln"> </span><span class="com">// higher pitch so we can distinguish left and right. </span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">data</span><span class="pun">-></span><span class="pln">right_phase </span><span class="pun">>=</span><span class="pln"> TABLE_SIZE</span><span class="pun">)</span><span class="pln"> data</span><span class="pun">-></span><span class="pln">right_phase </span><span class="pun">-=</span><span class="pln"> TABLE_SIZE</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="kwd">return</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">/**
* JACK calls this shutdown_callback if the server ever shuts down or
* decides to disconnect the client.
*/</span><span class="pln">
</span><span class="kwd">void</span><span class="pln">
jack_shutdown</span><span class="pun">(</span><span class="kwd">void</span><span class="pln"> </span><span class="pun">*</span><span class="pln">arg</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">exit</span><span class="pun">(</span><span class="lit">1</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">int</span><span class="pln">
main</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> argc</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">char</span><span class="pln"> </span><span class="pun">*</span><span class="pln">argv</span><span class="pun">[])</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">char</span><span class="pln"> </span><span class="pun">**</span><span class="pln">ports</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">char</span><span class="pln"> </span><span class="pun">*</span><span class="pln">client_name</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">char</span><span class="pln"> </span><span class="pun">*</span><span class="pln">server_name </span><span class="pun">=</span><span class="pln"> NULL</span><span class="pun">;</span><span class="pln">
    </span><span class="typ">jack_options_t</span><span class="pln"> options </span><span class="pun">=</span><span class="pln"> </span><span class="typ">JackNullOption</span><span class="pun">;</span><span class="pln">
    </span><span class="typ">jack_status_t</span><span class="pln"> status</span><span class="pun">;</span><span class="pln">
    paTestData data</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> i</span><span class="pun">;</span><span class="pln">

    </span><span class="com">/*if (argc >= 2) {      // client name specified? 
        client_name = argv[1];
        if (argc >= 3) {    // server name specified? 
            server_name = argv[2];
            int my_option = JackNullOption | JackServerName;
            options = (jack_options_t)my_option;
        }
    }
    else {          // use basename of argv[0]
        client_name = strrchr(argv[0], '/');
        if (client_name == 0) {
            client_name = argv[0];
        }
        else {
            client_name++;
        }
    }*/</span><span class="pln">

    client_name </span><span class="pun">=</span><span class="pln"> </span><span class="str">"mytest"</span><span class="pun">;</span><span class="pln">

    </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="pln">i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i</span><span class="pun"><</span><span class="pln">TABLE_SIZE</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        data</span><span class="pun">.</span><span class="pln">sine</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.2</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">float</span><span class="pun">)</span><span class="pln">sin</span><span class="pun">(((</span><span class="kwd">double</span><span class="pun">)</span><span class="pln">i </span><span class="pun">/</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">double</span><span class="pun">)</span><span class="pln">TABLE_SIZE</span><span class="pun">)</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> M_PI </span><span class="pun">*</span><span class="pln"> </span><span class="lit">2.</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    data</span><span class="pun">.</span><span class="pln">left_phase </span><span class="pun">=</span><span class="pln"> data</span><span class="pun">.</span><span class="pln">right_phase </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">


    </span><span class="com">// open a client connection to the JACK server </span><span class="pln">
    client </span><span class="pun">=</span><span class="pln"> jack_client_open</span><span class="pun">(</span><span class="pln">client_name</span><span class="pun">,</span><span class="pln"> options</span><span class="pun">,</span><span class="pln"> </span><span class="pun">&</span><span class="pln">status</span><span class="pun">,</span><span class="pln"> server_name</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">client </span><span class="pun">==</span><span class="pln"> NULL</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        fprintf</span><span class="pun">(</span><span class="pln">stderr</span><span class="pun">,</span><span class="pln"> </span><span class="str">"jack_client_open() failed, "</span><span class="pln">
            </span><span class="str">"status = 0x%2.0x\n"</span><span class="pun">,</span><span class="pln"> status</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">status </span><span class="pun">&</span><span class="pln"> </span><span class="typ">JackServerFailed</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            fprintf</span><span class="pun">(</span><span class="pln">stderr</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Unable to connect to JACK server\n"</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
        </span><span class="kwd">exit</span><span class="pun">(</span><span class="lit">1</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">status </span><span class="pun">&</span><span class="pln"> </span><span class="typ">JackServerStarted</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        fprintf</span><span class="pun">(</span><span class="pln">stderr</span><span class="pun">,</span><span class="pln"> </span><span class="str">"JACK server started\n"</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">status </span><span class="pun">&</span><span class="pln"> </span><span class="typ">JackNameNotUnique</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        client_name </span><span class="pun">=</span><span class="pln"> jack_get_client_name</span><span class="pun">(</span><span class="pln">client</span><span class="pun">);</span><span class="pln">
        fprintf</span><span class="pun">(</span><span class="pln">stderr</span><span class="pun">,</span><span class="pln"> </span><span class="str">"unique name `%s' assigned\n"</span><span class="pun">,</span><span class="pln"> client_name</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">// tell the JACK server to call `process()' whenever</span><span class="pln">
    </span><span class="com">//there is work to be done.</span><span class="pln">


    jack_set_process_callback</span><span class="pun">(</span><span class="pln">client</span><span class="pun">,</span><span class="pln"> process</span><span class="pun">,</span><span class="pln"> </span><span class="pun">&</span><span class="pln">data</span><span class="pun">);</span><span class="pln">

    </span><span class="com">// tell the JACK server to call `jack_shutdown()' if</span><span class="pln">
    </span><span class="com">//it ever shuts down, either entirely, or if it</span><span class="pln">
    </span><span class="com">//just decides to stop calling us.</span><span class="pln">


    jack_on_shutdown</span><span class="pun">(</span><span class="pln">client</span><span class="pun">,</span><span class="pln"> jack_shutdown</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">

    </span><span class="com">// create two ports </span><span class="pln">

    output_port1 </span><span class="pun">=</span><span class="pln"> jack_port_register</span><span class="pun">(</span><span class="pln">client</span><span class="pun">,</span><span class="pln"> </span><span class="str">"output1"</span><span class="pun">,</span><span class="pln">
        JACK_DEFAULT_AUDIO_TYPE</span><span class="pun">,</span><span class="pln">
        </span><span class="typ">JackPortIsOutput</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">

    output_port2 </span><span class="pun">=</span><span class="pln"> jack_port_register</span><span class="pun">(</span><span class="pln">client</span><span class="pun">,</span><span class="pln"> </span><span class="str">"output2"</span><span class="pun">,</span><span class="pln">
        JACK_DEFAULT_AUDIO_TYPE</span><span class="pun">,</span><span class="pln">
        </span><span class="typ">JackPortIsOutput</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">((</span><span class="pln">output_port1 </span><span class="pun">==</span><span class="pln"> NULL</span><span class="pun">)</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> </span><span class="pun">(</span><span class="pln">output_port2 </span><span class="pun">==</span><span class="pln"> NULL</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        fprintf</span><span class="pun">(</span><span class="pln">stderr</span><span class="pun">,</span><span class="pln"> </span><span class="str">"no more JACK ports available\n"</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">exit</span><span class="pun">(</span><span class="lit">1</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">//Tell the JACK server that we are ready to roll.  Our</span><span class="pln">
    </span><span class="com">// process() callback will start running now. </span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">jack_activate</span><span class="pun">(</span><span class="pln">client</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        fprintf</span><span class="pun">(</span><span class="pln">stderr</span><span class="pun">,</span><span class="pln"> </span><span class="str">"cannot activate client"</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">exit</span><span class="pun">(</span><span class="lit">1</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">// Connect the ports.  You can't do this before the client is</span><span class="pln">
    </span><span class="com">// activated, because we can't make connections to clients</span><span class="pln">
    </span><span class="com">// that aren't running.  Note the confusing (but necessary)</span><span class="pln">
    </span><span class="com">// orientation of the driver backend ports: playback ports are</span><span class="pln">
    </span><span class="com">// "input" to the backend, and capture ports are "output" from</span><span class="pln">
    </span><span class="com">// it.</span><span class="pln">


    ports </span><span class="pun">=</span><span class="pln"> jack_get_ports</span><span class="pun">(</span><span class="pln">client</span><span class="pun">,</span><span class="pln"> NULL</span><span class="pun">,</span><span class="pln"> NULL</span><span class="pun">,</span><span class="pln">
        </span><span class="typ">JackPortIsPhysical</span><span class="pln"> </span><span class="pun">|</span><span class="pln"> </span><span class="typ">JackPortIsInput</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">ports </span><span class="pun">==</span><span class="pln"> NULL</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        fprintf</span><span class="pun">(</span><span class="pln">stderr</span><span class="pun">,</span><span class="pln"> </span><span class="str">"no physical playback ports\n"</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">exit</span><span class="pun">(</span><span class="lit">1</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">jack_connect</span><span class="pun">(</span><span class="pln">client</span><span class="pun">,</span><span class="pln"> jack_port_name</span><span class="pun">(</span><span class="pln">output_port1</span><span class="pun">),</span><span class="pln"> ports</span><span class="pun">[</span><span class="lit">0</span><span class="pun">]))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        fprintf</span><span class="pun">(</span><span class="pln">stderr</span><span class="pun">,</span><span class="pln"> </span><span class="str">"cannot connect output ports\n"</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">jack_connect</span><span class="pun">(</span><span class="pln">client</span><span class="pun">,</span><span class="pln"> jack_port_name</span><span class="pun">(</span><span class="pln">output_port2</span><span class="pun">),</span><span class="pln"> ports</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        fprintf</span><span class="pun">(</span><span class="pln">stderr</span><span class="pun">,</span><span class="pln"> </span><span class="str">"cannot connect output ports\n"</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    jack_free</span><span class="pun">(</span><span class="pln">ports</span><span class="pun">);</span><span class="pln">

    </span><span class="com">// install a signal handler to properly quits jack client </span><span class="pln">
</span><span class="com">#ifdef</span><span class="pln"> WIN32
    signal</span><span class="pun">(</span><span class="pln">SIGINT</span><span class="pun">,</span><span class="pln"> signal_handler</span><span class="pun">);</span><span class="pln">
    signal</span><span class="pun">(</span><span class="pln">SIGABRT</span><span class="pun">,</span><span class="pln"> signal_handler</span><span class="pun">);</span><span class="pln">
    signal</span><span class="pun">(</span><span class="pln">SIGTERM</span><span class="pun">,</span><span class="pln"> signal_handler</span><span class="pun">);</span><span class="pln">
</span><span class="com">#else</span><span class="pln">
    signal</span><span class="pun">(</span><span class="pln">SIGQUIT</span><span class="pun">,</span><span class="pln"> signal_handler</span><span class="pun">);</span><span class="pln">
    signal</span><span class="pun">(</span><span class="pln">SIGTERM</span><span class="pun">,</span><span class="pln"> signal_handler</span><span class="pun">);</span><span class="pln">
    signal</span><span class="pun">(</span><span class="pln">SIGHUP</span><span class="pun">,</span><span class="pln"> signal_handler</span><span class="pun">);</span><span class="pln">
    signal</span><span class="pun">(</span><span class="pln">SIGINT</span><span class="pun">,</span><span class="pln"> signal_handler</span><span class="pun">);</span><span class="pln">
</span><span class="com">#endif</span><span class="pln">

    </span><span class="com">// keep running until the Ctrl+C </span><span class="pln">

    </span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="com">#ifdef</span><span class="pln"> WIN32 
        </span><span class="typ">Sleep</span><span class="pun">(</span><span class="lit">1000</span><span class="pun">);</span><span class="pln">
</span><span class="com">#else</span><span class="pln">
        sleep</span><span class="pun">(</span><span class="lit">1</span><span class="pun">);</span><span class="pln">
</span><span class="com">#endif</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    jack_client_close</span><span class="pun">(</span><span class="pln">client</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">exit</span><span class="pun">(</span><span class="lit">0</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></code></pre>
      </blockquote>
      <br>
    </p>
  </body>
</html>