class var processInfo : ProcessInfo
Overview 概要
Each process has a single, shared Process
object known as a process information agent that can return information such as arguments, environment variables, host name, and process name. The process
class method returns the shared agent for the current process. For example, the following line returns the Process
object, which then provides the name of the current process:
各プロセスは、ある単一の、共有Process
オブジェクトを、プロセス情報エージェントとして知られるものを持ちます、それは引数、環境変数、ホスト名、およびプロセス名のような情報を返すことができます。process
クラスメソッドは、現在のプロセスに対する共有エージェントを返します。例えば、以下の行はProcess
オブジェクトを返します、それはそれから現在のプロセスの名前を提供します:
Note 注意
Process
is thread-safe in macOS 10.7 and later.
Process
は、macOS 10.7以降ではスレッド安全です。
The Process
class also includes the operating
method, which returns an enumeration constant identifying the operating system on which the process is executing.
Process
クラスはまたoperating
メソッドを含みます、それはそれの上でそのプロセスが遂行されているオペレーティングシステムを識別するある列挙定数を返します。
Process
objects attempt to interpret environment variables and command-line arguments in the user’s default C string encoding if they can’t convert to Unicode as UTF-8 strings. If neither the Unicode nor C string conversion works, the Process
object ignores these values.
Process
オブジェクトは、環境変数とコマンドライン引数をユーザのもつ省略時のC文字列エンコーディングにおいて解釈しようと、もしそれらがUTF-8文字列としてユニコードへと変換できないならば試みます。ユニコードまたはC文字列変換のどちらも機能しないならば、Process
オブジェクトはこれらの値を無視します。
Manage Activities アクティビティ(活動状態)を管理する
The system has heuristics to improve battery life, performance, and responsiveness of applications for the benefit of the user. You can use the following methods to manage activities that give hints to the system that your application has special requirements: システムは、バッテリー寿命、性能、そしてアプリケーションの応答性をユーザの利益のために改善する発見的手法を持ちます。あなたは、以下のメソッドを使ってアクティビティを管理できます、それは、システムにあなたのアプリケーションが特別な要件を持つというヒントを与えます:
In response to creating an activity, the system disables some or all of the heuristics so your application can finish quickly while still providing responsive behavior if the user needs it. あるアクティビティを作成することに答えて、システムは発見的手法の幾つかまたは全てを作動しないようにします、それであなたのアプリケーションは素早くやり終えることができ、その一方で依然として応答性の挙動を提供します、もしユーザがそれを必要とするならば。
You use activities when your application performs a long-running operation. If the activity can take different amounts of time (for example, calculating the next move in a chess game), it should use this API to ensure correct behavior when the amount of data or the capabilities of the user’s computer varies. Activities fall into two major categories: あなたがアクティビティを使うのは、あなたのアプリケーションが長期動作の演算を実行する場合です。そのアクティビティが異なる量の時間をとる可能性があるならば(例えば、チェスゲームでの次の動きの計算)、それはこのAPIを使うことで、データ量またはユーザのコンビューターの潜在能力がさまざまである時に正しい挙動を確実にするべきです。アクティビティそれらは、2つの主要カテゴリに帰属します:
User-initiated activities are explicitly started by the user. Examples include exporting or downloading a user-specified file. ユーザ着手アクティビティは、明示的にユーザによって開始されます。例としては、ユーザ指定のファイルのエクスポート(移出)やダウンロードが含まれます。
Background activities perform the normal operations of your application and aren’t explicitly started by the user. Examples include autosaving, indexing, and automatic downloading of files. バックグラウンド(背景)アクティビティは、あなたのアプリケーションの通常の演算を実行します、そしてユーザによって明示的に開始されません。例としては、自動保存、索引作成、そしてファイルの自動ダウンロードが含まれます。
In addition, if your application requires high priority input/output (I/O), you can include the latency
flag (using a bitwise OR
). You should only use this flag for activities like audio or video recording that require high priority I/O.
加えて、あなたのアプリケーションが高い優先順位の入力/出力(I/O)を要求するならば、あなたはlatency
フラグを含めることができます(ビット単位OR
を使って)。あなたは、このフラグを音声や映像の記録のようなアクティビティに対してのみ使用すべきです、それらは高い優先順位 I/O を必要とします。
If your activity takes place synchronously inside an event callback on the main thread, you don’t need to use this API. あなたのアクティビティがメインスレッド上のあるイベントコールバック内部で同期的に起こるならば、あなたはこのAPIを使う必要はありません。
Be aware that failing to end these activities for an extended period of time can have significant negative impacts on the performance of your user’s computer, so be sure to use only the minimum amount of time required. User preferences may override your application’s request. 自覚してください、これらアクティビティを長期間にわたり終了し損なうことは、重大な悪影響をあなたのユーザのもつコンピュータの性能に与える可能性があります、なので必要とされる最小限の時間だけ使うことを確実にしてください。ユーザ環境設定は、あなたのアプリケーションの要求をオーバーライドするかもしれません。
You can also use this API to control automatic termination or sudden termination (see Support Sudden Termination). For example, the following code brackets the work to protect it from sudden termination: あなたはまた、このAPIを使って自動終了または即時終了を制御できます(即時終了をサポートするを見てください)。例えば、以下のコードは、作業を角括弧で囲むことでそれを即時終了から保護します:
The above example is equivalent to the following code, which uses the disable
method:
上の例は、以下のコードに等しいです、それはdisable
メソッドを使います:
Because this API returns an object, it may be easier to pair begins and ends than when using the automatic termination API. If your app deallocates the object before the end
call, the activity ends automatically.
このAPIがあるオブジェクトを返すことから、始まりと終わりを対にするのは自動終了APIを使う場合よりも簡単かもしれません。あなたのアプリがそのオブジェクトをend
呼び出しの前にデアロケートするならば、そのアクティビティは自動的に終わります。
This API also provides a mechanism to disable system-wide idle sleep and display idle sleep. These can have a large impact on the user experience, so be careful to end activities that disable sleep (including user
).
このAPIはまた、システム全体の休眠とディスプレイの休眠に対する仕組みを提供します。これらは、ユーザ体験に大きな影響を与えます、なのでスリープを作動しなくするアクティビティを終了するように気をつけてください(user
を含めて)。
Support Sudden Termination 即時終了をサポートする
macOS 10.6 and later includes a mechanism that allows the system to log out or shut down more quickly by, whenever possible, killing applications instead of requesting that they quit themselves. macOS 10.6以降はある仕組みを含み、それはシステムにより素早いログアウトやシャットダウンを許可します、可能ならいつでもアプリケーションそれらをキルする(殺す)ことによって、それらがそれら自身を終了するように要請する代わりに。
Your application can enable this capability on a global basis and then manually override its availability during actions that could cause data corruption or a poor user experience by allowing sudden termination. あなたのアプリケーションは、この能力を全面的規模で利用可能にして、それから手動でそれの利用可能性をオーバーライドすることがデータ汚染または貧弱なユーザ体験を即時終了の許可によって引き起こしうる動作の間に行えます。
Alternatively, your application can manually enable and disable this functionality. Creating a process assigns a counter that indicates if the process is safe to terminate. You decrement and increment the counter using the methods enable
and disable
. A value of 0
enables the system to terminate the process without first sending a notification or event.
あるいはまた、あなたのアプリケーションはこの機能性を手動で作動せさたり作動しないようにできます。あるプロセスを作成することは、あるカウンターを割り当てます、それはそのプロセスが終了するのに安全かどうかを指し示します。あなたは、そのカウンターの漸増および漸減をメソッドenable
およびdisable
を使って行います。0
の値は、システムにそのプロセスの終了を、最初にある通知またはイベントを送信することなしに可能にします。
Your application can support sudden termination upon launch by adding a key to the application’s Info
file. If the NSSupports
key exists in the Info
file and has a value of true
, it’s the equivalent of calling enable
during your application launch. This allows the system to terminate the process immediately. You can still override this behavior by invoking disable
.
あなたのアプリケーションは、あるキーをアプリケーションのもつInfo
ファイルに加えることによって、起動時に即時終了をサポートできます。NSSupports
キーがInfo
ファイルの中に存在してtrue
の値を持つならば、それはenable
をあなたのアプリケーション起動の間に呼び出すことに相当します。これは、システムにそのプロセスを直ぐに終了することを許可します。あなたは、依然としてこの挙動をオーバーライドすることがdisable
を発動することで可能です。
Typically, you disable sudden termination whenever your app defers work that the app must complete before it terminates. If, for example, your app defers writing data to disk and enables sudden termination, you should bracket the sensitive operations with a call to disable
, perform the necessary operations, and then send a balancing enable
message.
概して、あなたは即時終了を作動しないようにします、あなたのアプリがそれが終了する前に完了しなければならない仕事を延期する時はいつでも。例えば、あなたのアプリがデータのディスクへの書き込みを延期するそして即時終了を可能にするならば、あなたは注意を要する演算それらをdisable
への呼び出しとともに角括弧で囲って、その不可欠な演算それらを実行して、それから収支を合わせるenable
メッセージを送るべきです。
In agents or daemon executables that don’t depend on AppKit, you can manually invoke enable
right away. You can then use the enable and disable methods whenever the process has work it must do before it terminates.
AppKitに依存しないエージェントまたはデーモン実行可能ファイルでは、あなたは手動でenable
をすぐ発動できます。あなたはそれから使用可能および使用不能にするメソッドを、そのプロセスがそれが終了する前にそれが行わなければならない仕事を持つ場合はいつでも使用できます。
Some AppKit functionality automatically disables sudden termination on a temporary basis to ensure data integrity. いくらかのAppKit機能性は自動的に即時終了を一時的に使用不能にして、データ完全性を確かなものにします。
User
temporarily disables sudden termination to prevent the process from terminating between the time at which it sets the default and the time at which it writes the preferences file — including that default — to disk.Defaults User
は、一時的に即時終了を使用不能にすることでプロセスの終了を、それが初期状態を設定する時間とそれが初期設定ファイルを書き出す時間のあいだ防止します。Defaults NSDocument
temporarily disables sudden termination to prevent the process from terminating between the time at which the user has made a change to a document and the time at whichNSDocument
writes the user's change to disk.NSDocument
は、一時的に即時終了を使用不能にすることでプロセスの終了を、ユーザが変更をある書類にした時間とNSDocument
がユーザの変更がディスクに書き込む時間のあいだ防止します。
Tip 助言
You can determine the value of the sudden termination using the following LLDB command. あなたは、即時終了の値を以下のLLDBコマンドを使って決定できます。
Don’t attempt to invoke or override sudden
(a private method) in your application. It’s there for this debugging purpose and may disappear at any time.
sudden
(プライベートメソッド)をあなたのアプリケーションにおいて発動またはオーバーライドしようとしないでください。それは、このデバッグ目的のためにあり、そしていつ何時存在しなくなるかもしれません。
Monitor Thermal State to Adjust App Performance 温度状態を監視してアプリ性能を調整する
Thermal state indicates the level of heat generated by logic components as they run apps. As the thermal state increases, the system decreases heat by reducing the speed of the processors. Optimize your app’s performance by monitoring the thermal state and reducing system usage as the thermal state increases. Query the current state with thermal
to determine if your app needs to reduce system usage. You can register the thermal
for notifications of a change in thermal state. For recommended actions, see Process
.
温度状態は、論理回路部品それらによってそれらがアプリを実行するとき生成される熱の水準を指し示します。温度状態が漸増するにつれて、システムはプロセッサの速度を減少することによって熱を漸減します。あなたのアプリの性能を温度状態を監視することそしてシステム利用を温度状態が漸増するにつれて減らすことによって最適化してください。現在の状態をthermal
で問いただすことで、あなたのアプリがシステム利用を減らす必要があるか決定してください。あなたは、thermal
を温度状態におけるある変化の通知のために登録できます。推奨される動作のために、Process
を見てください。