C言語のプログラムで、コマンドパラメタを入力する部分をつくっていたのですが、ファイルを作ってほしくないケースが出てきました。
// 引数からIPアドレス、ポート、RTSP URL、ファイル名を取得
char *srt_ip = DEFAULT_IP;
int srt_port = DEFAULT_PORT;
char *rtsp = DEFAULT_RTSP;
char *filename = DEFAULT_FILENAME;
int udp_port = DEFAULT_UDP_PORT;
for (int i = 1; i < argc; i++) {
if (strcmp(argv[i], "-i") == 0 && i + 1 < argc) {
srt_ip = argv[i + 1];
i++;
} else if (strcmp(argv[i], "-p") == 0 && i + 1 < argc) {
srt_port = atoi(argv[i + 1]);
i++;
} else if (strcmp(argv[i], "-r") == 0 && i + 1 < argc) {
rtsp = argv[i + 1];
i++;
} else if (strcmp(argv[i], "-f") == 0 && i + 1 < argc) {
filename = argv[i + 1];
i++;
} else if (strcmp(argv[i], "-u") == 0 && i + 1 < argc) { // UDPポート番号の引数を追加
udp_port = atoi(argv[i + 1]);
i++;
} else {
printf("Usage: %s [-i ip_address] [-p port] [-r rtsp_url] [-f filename] [-u udp_port]\n", argv[0]);
printf("./abc_vtp_0.3 -i 192.168.101.10 -p 38090 -r rtsp://cam:Cam12345@192.168.0.11/Src/MediaInput/stream_1 -f 2jcie/data_test2.csv -u 12346 \n");
printf("-f /dev/null とすることでSRTメトリックス情報は廃棄されます \n");
printf("-u 0 とすることで制御用スレッドは起動しなくなります\n ");
return 1;
}
}
printf("IP: %s\nPort: %d\nRTSP: %s\nFilename: %s\nUDP Port: %d\n", srt_ip, srt_port, rtsp, filename, udp_port);
しかし上記のプログラムでは、ファイル名を無視すると、デフォルトのファイル名を選んでしまいます。そんでもって、プログラムの改造もしたくありませんでした。
今更ながらなのですが、ファイル名を
/dev/null
とすると、ファイルを作らずにデータを捨ててくれるようです。
(コマンドプロンプトでしか使えないと思っていた)
いや、本当に助かった。変なコード追加しなくて済んだし。
それ以上に、この程度のことを、今の今まで、私が知らなかったことが驚きです。
まあ、私の力量などこの程度です(乾いた笑い)。