私は、一連のプロセスが作成されていれば多少ばかげた質問をしています...これらは必ずしもある種の継承ではなく、プロセスのPIDは連続的でなければなりませんランダムなpids?プロセスのpidについて
答えて
これはオペレーティングシステムによって決まります。
一般に、これらは通常、OSによって順番に割り当てられます。しかし、ほとんどのオペレーティングシステムの仕様では、プロセスIDの割り当てが確定的でない(つまり、ランダムであり、将来のバージョンなどで変更される可能性がある)ため、この動作は決定を下すものではありません。
プラットフォームによって異なりますが、pidの特定の順序に依存しないでください。
Windowsでは、pidは通常増加する数で割り当てられますが、プロセスが終了するとpidがリサイクルされ、新しいプロセスのpidが古いプロセスよりも低いケースが表示されます。また、pidはtidと同じ名前空間から出てくるので、新しいプロセスを起動するとpidが4ずつ増加することはありません。
あなたの視点から見ればランダムになります。システムはこれらの番号を管理し、プロセスの作成時にそれらの番号を割り当てます。私のシステムに現在あるPIDの簡単な一見は、それらがすべて4で割り切れることを示しています。
私は、作成プロセスとリリースプロセスをシミュレートするセマフォーを使用してCでプログラムを実行しています。次に、PIDランダムプロセスを割り当てるかどうか、またはそれぞれが値から連続する数値を割り当てるかどうかはわかりません。可能な限りLinuxのクリアランスプロセス – franvergara66
Linuxでは、pidは一般的にシステム全体で順次割り当てられますが、定期的にラップされ、他の無関係なプロセスによって「ギャップ」が発生する可能性があります。極端な場合には、このラップアラウンドを引き起こすのに十分な幅の「ギャップ」があるかもしれません。特定の順序付けを仮定しないでください。代わりに、明示的に親プロセスまたは子プロセスのPIDを追跡してください。
私は、作成プロセスとリリースプロセスをシミュレートするセマフォを使用してCでプログラムを実行しています。次に、PIDランダムプロセスを割り当てるかどうか、またはそれぞれが値から連続する番号を割り当てるかどうか、シミュレーションをLinuxのクリアランスプロセスとできるだけ似ているようにしたい場合 – franvergara66
シミュレーションを作成する場合、ファジングの観点からの最良のアプローチは、複数のメソッド(ランダム、シーケンシャル、ほぼシーケンシャル)を持ち、何でも試してみることですあなたはそれぞれをテストしています。 – bdonlan
これらの子を作成している場合は、pidがわかります.pidはOSスケジューラに依存していますが、このことは気にしません。
はここにあなたのシステムが何をテストする方法は次のとおりです。
for i in $(seq 20); do ps; done | grep ps
「PS」コマンドのPIDが連続プロセス、または任意の他の発信者が合理的に産卵することができるように期待できるとして、連続したに近いです。
私のcygwinターミナルはWindows上でランダムに割り振ります。私のウェブホストはそれらを順番に割り当てます(たぶん、他のユーザーやサーバーによって実行されるプロセスの間違いがあります)。
マルチユーザシステムのユーザ間で情報が漏洩する可能性があるため、シーケンシャルPID割り当てはわずかなセキュリティ上の問題であると考えている人もいます。
より良いアプローチは、 'seq 20 'のiのために です。 sh -c 'echo $$'を実行します。 done psの出力をgreppingすると結果にノイズが発生する可能性があります(例えば、同時にpsを実行している他のユーザー...) – bdonlan
確かに、私はコマンドラインから簡単な開発者テストを考えていました。あなたが出力に依存するスクリプトや何かを書いたのであれば、それは別の問題です。 –
AIXでは、より大きい(たとえば7桁の)PIDが頻繁に表示されますが、必ずしも半逐次的に割り当てる必要はありません(テストしたときにサイクリングしていたようですが、 、それはあまり意味しないかもしれません)。 AIX 5.3マシン上
新鮮ログイン:Linuxでの
$ ps
PID TTY TIME CMD
1060910 pts/27 0:00 -ksh
1155224 pts/27 0:00 ps
$
- 1. PIDによるErlangのプロセスの殺し
- 2. 私のプロセスをデバッグしているVisual StudioのPIDを見つけよう
- 3. ファイルをロックしたプロセスのPIDを見つける
- 4. 現在実行中のプロセスのpid
- 5. Windowsバッチファイル:最後のプロセスのPID?
- 6. pidがわかっているときにCのプロセスをkillするには
- 7. Bashの別のプロセスにパイプされるプロセスのPIDを取得するには?
- 8. エリクシール - スーパーバイザのプロセスのすべてのPIDを取得
- 9. PID(プロセスID)のみを持っている場合はウィンドウタイトルを取得
- 10. Windowsで最後に実行されたプロセスのPID
- 11. 異なるpidを持つ複数のJavaプロセスを表示するHtop
- 12. Linuxカーネルのデーモンプロセスにpid(プロセスID)がどのように割り当てられていますか?
- 13. タスクリストからPIDを渡し、タスクリストを持つプロセスを終了させます。
- 14. スタッククリーンアップと別プロセスについて
- 15. プロセスの親のPIDを決める方法
- 16. 実行中のfirefoxプロセスのPIDを取得
- 17. シェルスクリプトでフォークされた子プロセスからプロセスID(pid)を取得する方法
- 18. コンピュータ上の実行中のプロセスについての詳細について
- 19. プロセス情報の読み込みproc/<pid> /ステータス
- 20. pidからプロセスの詳細を取得する方法
- 21. C - popenで開かれたプロセスのPIDを取得する
- 22. プロセスのPIDの最大可能長はどれくらいですか? (64ビット)
- 23. 特定のPIDを指定して、Javaでプロセスを終了する方法
- 24. pidでプロセスを1行で終了させる
- 25. Pythonでプロセスを開始し、PIDを取得する(Linux)
- 26. pidまたはハンドルからプロセス名を取得
- 27. フルネームを知らずにプロセスを終了させるプロセスのPIDを取得する
- 28. php safe_modeがオンのときにPIDでプロセスをkillする方法
- 29. アンドロイド:プロセスを経由してリモートサービスの通信について
- 30. 与えられたPIDを持つプロセスが実行中であることを確認するには?
、\t は、彼らはまた、オペレーティングシステムに依存することは思いもしませんでした。.. – franvergara66