4

この質問は、この質問のフォローアップです。

bash コマンドを発行するposix_spawn()と、次のメッセージが表示されます。

bash: このシェルにはジョブ制御がありません

フォークシーケンスで関数の呼び出しがあり、setsid()使用中にこの操作をシミュレートする方法がわからないためだと思いますposix_spawn()

bash プロセス用の新しいセッションを作成する方法はありますか?

4

1 に答える 1

2

できません。現在のposix_spawnインターフェースの一部ではありません。それを追加することはhttp://austingroupbugs.net/view.php?id=1044で議論されており 、明らかに少なくとも 1 つの実装 (QNX)POSIX_SPAWN_SETSIDが拡張機能として提供されていますが、標準に準拠し続けるには、fork.

親プロセスが小さい場合、使用forkは問題にならないはずなので、両方の世界を最大限に活用するには、と を呼び出すposix_spawn小さなヘルパー バイナリを起動するために使用できると思います。IMO、使用は、二重実行のわずかな追加コストが無視できるほど十分にまれである必要があります。forkssetsidsetsid

于 2017-10-19T11:21:18.657 に答える