この質問は、この質問のフォローアップです。
bash コマンドを発行するposix_spawn()
と、次のメッセージが表示されます。
bash: このシェルにはジョブ制御がありません
フォークシーケンスで関数の呼び出しがあり、setsid()
使用中にこの操作をシミュレートする方法がわからないためだと思いますposix_spawn()
。
bash プロセス用の新しいセッションを作成する方法はありますか?
できません。現在のposix_spawn
インターフェースの一部ではありません。それを追加することはhttp://austingroupbugs.net/view.php?id=1044で議論されており
、明らかに少なくとも 1 つの実装 (QNX)POSIX_SPAWN_SETSID
が拡張機能として提供されていますが、標準に準拠し続けるには、fork
.
親プロセスが小さい場合、使用fork
は問題にならないはずなので、両方の世界を最大限に活用するには、と を呼び出すposix_spawn
小さなヘルパー バイナリを起動するために使用できると思います。IMO、使用は、二重実行のわずかな追加コストが無視できるほど十分にまれである必要があります。forks
setsid
setsid