mirror of
http://www.pogo.org.uk/~mark/trx.git
synced 2024-11-21 18:05:06 +01:00
Add an optional daemon mode
This commit is contained in:
parent
b53aa73137
commit
e1682f4dd6
12
rx.c
12
rx.c
@ -162,9 +162,10 @@ static void usage(FILE *fd)
|
|||||||
fprintf(fd, " -c <n> Number of channels (default %d)\n",
|
fprintf(fd, " -c <n> Number of channels (default %d)\n",
|
||||||
DEFAULT_CHANNELS);
|
DEFAULT_CHANNELS);
|
||||||
|
|
||||||
fprintf(fd, "\nDisplay parameters:\n");
|
fprintf(fd, "\nProgram parameters:\n");
|
||||||
fprintf(fd, " -v <n> Verbosity level (default %d)\n",
|
fprintf(fd, " -v <n> Verbosity level (default %d)\n",
|
||||||
DEFAULT_VERBOSE);
|
DEFAULT_VERBOSE);
|
||||||
|
fprintf(fd, " -D <file> Run as a daemon, writing process ID to the given file\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
@ -176,7 +177,8 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
/* command-line options */
|
/* command-line options */
|
||||||
const char *device = DEFAULT_DEVICE,
|
const char *device = DEFAULT_DEVICE,
|
||||||
*addr = DEFAULT_ADDR;
|
*addr = DEFAULT_ADDR,
|
||||||
|
*pid = NULL;
|
||||||
unsigned int buffer = DEFAULT_BUFFER,
|
unsigned int buffer = DEFAULT_BUFFER,
|
||||||
rate = DEFAULT_RATE,
|
rate = DEFAULT_RATE,
|
||||||
jitter = DEFAULT_JITTER,
|
jitter = DEFAULT_JITTER,
|
||||||
@ -216,6 +218,9 @@ int main(int argc, char *argv[])
|
|||||||
case 'v':
|
case 'v':
|
||||||
verbose = atoi(optarg);
|
verbose = atoi(optarg);
|
||||||
break;
|
break;
|
||||||
|
case 'D':
|
||||||
|
pid = optarg;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
usage(stderr);
|
usage(stderr);
|
||||||
return -1;
|
return -1;
|
||||||
@ -244,6 +249,9 @@ int main(int argc, char *argv[])
|
|||||||
if (set_alsa_sw(snd) == -1)
|
if (set_alsa_sw(snd) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
if (pid)
|
||||||
|
go_daemon(pid);
|
||||||
|
|
||||||
go_realtime();
|
go_realtime();
|
||||||
r = run_rx(session, decoder, snd, channels, rate);
|
r = run_rx(session, decoder, snd, channels, rate);
|
||||||
|
|
||||||
|
29
sched.c
29
sched.c
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
#include <sched.h>
|
#include <sched.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "sched.h"
|
#include "sched.h"
|
||||||
|
|
||||||
@ -49,3 +50,31 @@ int go_realtime(void)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int go_daemon(const char *pid_file)
|
||||||
|
{
|
||||||
|
FILE *f;
|
||||||
|
|
||||||
|
if (daemon(0, 0) == -1) {
|
||||||
|
perror("daemon");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pid_file)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
f = fopen(pid_file, "w");
|
||||||
|
if (!f) {
|
||||||
|
perror("fopen");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf(f, "%d", getpid());
|
||||||
|
|
||||||
|
if (fclose(f) != 0) {
|
||||||
|
perror("fclose");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
1
sched.h
1
sched.h
@ -21,5 +21,6 @@
|
|||||||
#define MISC_H
|
#define MISC_H
|
||||||
|
|
||||||
int go_realtime(void);
|
int go_realtime(void);
|
||||||
|
int go_daemon(const char *pid_file);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
14
tx.c
14
tx.c
@ -149,9 +149,10 @@ static void usage(FILE *fd)
|
|||||||
fprintf(fd, " -b <kbps> Bitrate (approx., default %d)\n",
|
fprintf(fd, " -b <kbps> Bitrate (approx., default %d)\n",
|
||||||
DEFAULT_BITRATE);
|
DEFAULT_BITRATE);
|
||||||
|
|
||||||
fprintf(fd, "\nDisplay parameters:\n");
|
fprintf(fd, "\nProgram parameters:\n");
|
||||||
fprintf(fd, " -v <n> Verbosity level (default %d)\n",
|
fprintf(fd, " -v <n> Verbosity level (default %d)\n",
|
||||||
DEFAULT_VERBOSE);
|
DEFAULT_VERBOSE);
|
||||||
|
fprintf(fd, " -D <file> Run as a daemon, writing process ID to the given file\n");
|
||||||
|
|
||||||
fprintf(fd, "\nAllowed frame sizes (-f) are defined by the Opus codec. For example,\n"
|
fprintf(fd, "\nAllowed frame sizes (-f) are defined by the Opus codec. For example,\n"
|
||||||
"at 48000Hz the permitted values are 120, 240, 480 or 960.\n");
|
"at 48000Hz the permitted values are 120, 240, 480 or 960.\n");
|
||||||
@ -168,7 +169,8 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
/* command-line options */
|
/* command-line options */
|
||||||
const char *device = DEFAULT_DEVICE,
|
const char *device = DEFAULT_DEVICE,
|
||||||
*addr = DEFAULT_ADDR;
|
*addr = DEFAULT_ADDR,
|
||||||
|
*pid = NULL;
|
||||||
unsigned int buffer = DEFAULT_BUFFER,
|
unsigned int buffer = DEFAULT_BUFFER,
|
||||||
rate = DEFAULT_RATE,
|
rate = DEFAULT_RATE,
|
||||||
channels = DEFAULT_CHANNELS,
|
channels = DEFAULT_CHANNELS,
|
||||||
@ -181,7 +183,7 @@ int main(int argc, char *argv[])
|
|||||||
for (;;) {
|
for (;;) {
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
c = getopt(argc, argv, "b:c:d:f:h:m:p:r:v:");
|
c = getopt(argc, argv, "b:c:d:f:h:m:p:r:v:D:");
|
||||||
if (c == -1)
|
if (c == -1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -213,6 +215,9 @@ int main(int argc, char *argv[])
|
|||||||
case 'v':
|
case 'v':
|
||||||
verbose = atoi(optarg);
|
verbose = atoi(optarg);
|
||||||
break;
|
break;
|
||||||
|
case 'D':
|
||||||
|
pid = optarg;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
usage(stderr);
|
usage(stderr);
|
||||||
return -1;
|
return -1;
|
||||||
@ -249,6 +254,9 @@ int main(int argc, char *argv[])
|
|||||||
if (set_alsa_sw(snd) == -1)
|
if (set_alsa_sw(snd) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
if (pid)
|
||||||
|
go_daemon(pid);
|
||||||
|
|
||||||
go_realtime();
|
go_realtime();
|
||||||
r = run_tx(snd, channels, frame, encoder, bytes_per_frame,
|
r = run_tx(snd, channels, frame, encoder, bytes_per_frame,
|
||||||
ts_per_frame, session);
|
ts_per_frame, session);
|
||||||
|
Loading…
Reference in New Issue
Block a user