C言語で、execl(可変調引数の関数)に、配列の要素を一度に全て渡したいのですがどのようにすれば良いか分かりません。 具体的には、
C言語で、execl(可変調引数の関数)に、配列の要素を一度に全て渡したいのですがどのようにすれば良いか分かりません。 具体的には、 char *buf[4] = {"/bin/echo", "echo", "echo", "hoge"}; execl(buf[0],buf[1],buf[2],buf[3],NULL); で、配列の要素数が変わっても、execlに一度に全ての引数を渡したいです。(for文のように)
C言語関連・71閲覧
ベストアンサー
なんとかなるとすれば、次がヒントでしょうが、出来るかどうかはちょっとわかりません。 https://docs.microsoft.com/ja-jp/cpp/c-runtime-library/reference/va-arg-va-copy-va-end-va-start?view=msvc-170
しかしながら、この超絶技巧のようなことを考える前に、実際上何をしたいのかをよく考えたほうが良い気がします。 長さが不定の配列を渡したいだけなのであれば、「配列の最後の要素に終わりの印を入れて、配列の最初を指すポインタを渡すようにする」か、「配列の要素数と配列の最初を指すポインタ」を渡すようにすればよさそうです。
質問者からのお礼コメント
丁寧にお答えいただけて嬉しかったです。具体例までありがとうございました。
お礼日時:5/24 22:36