カスタムargcおよびargvでgetopt_long()関数を使用するのに問題があります。
実際のコマンドライン引数ではなく、文字列で引数を受け取ります。次に、この文字列からnew_argcとnew_argvが作成され、getopt_long()で使用されます。ただし、getopt_long()は最初の呼び出し自体で失敗します。EOFおよびoptarg=NULLを返します。
string is "-c 10.30.99.41"
new_argc = 3
new_argv[0]=>./prog_name
new_argv[1]=>-c
new_argv[2]=>10.30.99.41
コマンドライン引数を渡せば、getopt_longは問題なく動作します。だから私の短いオプションと長いオプションは正しいです。しかし、new_argcとnew_argvを渡すと、失敗します。
私の短いオプションと長いオプションは正しく、argvはNULLで終了していると確信しています。ここにこれ以上コードを投稿できないことをお詫び申し上げます。
getopt_longをカスタムargcおよびargvで使用できるかどうかは疑問です。argc、argvに関連するlibc内の他のコードを参照している必要があるため、実際のargcとargvでのみ機能すると思われます。コメントはありますか?
option = getopt_long( new_argc, new_argv, short_options, long_options, NULL );