execl 関数を使用する単純な C プログラムを作成しました。このプログラムを実行した後に期待しているのは、 の出力ですps -U myusername
。
ps -U myusername
ターミナルに書き込むと、目的の結果が得られます。
呼び出すexecl("/bin/ps", "/bin/ps", "-U myusername", NULL)
と、次のエラー メッセージが表示されますerror: improper list
。
ただし、 からスペースを削除-U myusername
し、次の方法で関数を呼び出すとexecl("/bin/ps", "/bin/ps", "-Umyusername", NULL)
、正しい結果が得られます。
なぜこれが起こっているのか、どうすれば期待どおりの動作を実現できますか (これは単なる例です。実際に必要なのは、ユーザーがコマンドを入力し、それをコマンドと引数に分割して、最後に のようなものを呼び出すことexeclp("command", "command", "arguments", NULL)
です)。