"su"プロセスは避けられませんが、testbinが処理する前に終了させることができます。 「スリープ」を使用してあなたの元の質問には、次のようになります。
(su - root -c "sleep 120" &) ; ps aux | grep sleep
あなたはその行を複数回実行する場合は、grepの結果として、複数の「SU」のプロセスが表示されます。サブプロセスをバックグラウンド化 はこのように、最後までSUプロセスを可能にする:
(su - root -c "sleep 120 &" &) ; ps aux | grep sleep
あなたが「SU」プロセスがリストから消えていることが、スリープコマンドが継続することを確認することができ、その行を複数回実行
。
二重引用符内のアンパサンドはサブプロセス用であり、括弧の直前のアンパサンドは質問を1行で実行し、このケースをテストするのに必要な 'su'コマンド用であることに注意してください。
「execv」と同等のコマンドラインが存在するかどうかを確認しましたが、そうは思われません。また、 'su'は呼び出し元の権限で実行されるプロセスであり、suのサブプロセスは 'su'によってforkされたプロセスの権限で実行されます。セキュリティ上の理由から、 'exec'が 'C'で行うように 'su'プロセスを子プロセスに置き換えることはできません。
答えていただきありがとうございます。私のtestbinプロセスのみをリストアップしています。実際はsuコマンドプロセスでした。 –