システム内のすべてのプロセスを一覧表示するとします。私は結果を得るためにシェルコマンド "ps"とシステム関数を使用しました。しかし、それは少し複雑に思えます。 UNIX C関数を使用してこのジョブを完了する方法。UNIX-C/C++を使用して実行中のすべてのプロセスを一覧表示する方法
答えて
Linuxでは、プロセス情報について疑似ファイルシステム/proc
を調べることができます。つまり、opendir()
の機能を使用し、数字であるサブディレクトリを探すことです。これは、システム上で実行されている各プロセスのプロセス識別子です。各サブディレクトリには、プロセスに必要な権限があれば、open()/read()
を使用して開いたり読むことができる多数のファイルがあります。
は
procのあなたに利用可能な情報の詳細は、(5)
manページを参照してください。
あなたはただリストする必要があります/proc/
ディレクトリ=)私のquestionは多分あなたのために役立つかもしれません。
プロセス情報を見つける基準はありません。各Unixベンダーは、システム管理者に情報を提供する独自のメカニズムを提供します。
LinuxとSolarisは、プロセスの情報をユーザー空間にエクスポートするためにファイルシステム/proc/
を使用しますが、それらはすべて互換性がないと思います。 (私は、Solarisがカーネル内の処理を取り除くためにバイナリ形式ですべての情報をエクスポートすることにした漠然とした想いを持っていますが、ユーザ空間プログラムとカーネルのデータ構造をより緊密に結びつける代わりに、カーネルを覗いてプロセステーブルを読み込むためのメモリ、これ以上は必要ないとは思いますが、歴史的な知識はまだ残っています)
プラットフォーム固有の場合は、Linux proc(5)
マンページに必要。ハッピーハッキング:)
また、BSDシステムでは、それをまったく使用しないと、縮小されたprocfsレイアウトまたは異なるprocfsレイアウトが使用されます。これにはMacOS *née* Darwinも含まれます。 – tchrist
psのマニュアルページから、ps -e
を使用してすべてのプロセスを標準形式で一覧表示し、ps ax
を使用してすべてのプロセスをBSD形式でリストすることができます。
希望に役立ちます。
これには仕上げの解決策があります。
それはgitのを使用して、あなたがやりたいhttps://sourceforge.net/p/readproc/code/ci/master/tree/
クローンを参照してください。
#include"read_proc.h"
int main(void)
{
struct Root * root=read_proc();
struct Job * buffer;
int i=0;
for(;i<root->len;i++)
{
buffer=get_from_place(root,i);
printf("%s\t%u\n",buffer->name,buffer->pid);
}
return 0;
}
このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 –
ソースフォージサーバーが現在停止しています。 – LittleByBlue
PSis the standard、良くも悪くも。クロスプラットフォームでの出力の解析を簡素化できる、多くの不満足なフォーマットオプションがあります。
/proc
は、より便利ですが、移植性が低く、サポートされている場合でもローカルでは使用できない可能性があります(chroot環境)。
- 1. Windows Phone 7で実行中のプロセスを一覧表示する方法は?
- 2. アクティブな(実行中の)アプリケーションの一覧を一覧表示で表示する
- 3. 実行中のEclipseインスタンス内のすべての機能をプログラムで一覧表示する方法
- 4. すべてのVOBのフォルダパスを一覧表示する方法
- 5. Google +のすべての+1を一覧表示する方法
- 6. Nugetですべてのパッケージを一覧表示する方法
- 7. すべてのKafka zookeeperブートストラップサーバーを一覧表示する方法
- 8. 現在、VB.NET 2.0でWindows上で実行されているすべてのプロセスを一覧表示します。
- 9. jsp、サーブレットを使用してウェブアプリケーションにログオンしているすべてのユーザーを一覧表示する方法
- 10. ClearCaseを使用してすべてのチェックインを一覧表示するには?
- 11. ThreadPoolTaskExecutor内のすべての実行中/待機中のスレッドを一覧表示する
- 12. Mac Finderを使用してフォルダ内のすべてのエイリアスを一覧表示する方法
- 13. パーマリンクを使用してカスタムタクソノミのすべてのアイテムをワードプレスで一覧表示する方法
- 14. RubyでFogを使用してS3フォルダ内のすべてのファイルを一覧表示する方法
- 15. すべてのホームスクリーンフォルダをAndroid用に一覧表示する方法
- 16. c#ビジネスオブジェクトユニバースを使用するすべてのレポートを一覧表示します。
- 17. bashコマンドでプロセスで使用されるパイプを一覧表示する方法
- 18. 列を一覧表示せずに、すべての列で同じ集計を実行する方法は?
- 19. RSpecは保留中のすべての例を一覧表示します
- 20. VBScriptを使用するすべてのOutlookプロファイルとPSTの一覧を表示
- 21. Apacheを使用してファイルディレクトリ/ファイルを一覧表示する方法
- 22. ディレクトリ内のすべてのファイルを一覧表示する方法Silverlight
- 23. すべてのRails 3コントローラとそのパブリックメソッドを一覧表示する方法
- 24. zendフレームワークですべてのコントローラとアクションを一覧表示する方法
- 25. 角度jsを使用するフォルダからすべてのファイル名を一覧表示する方法
- 26. ios:bonjourを使用してWi-Fiデバイスを一覧表示する
- 27. カテゴリのすべてのパフォーマンスカウンターを一覧表示する
- 28. FAT:ディレクトリ内のすべてのファイルを一覧表示する
- 29. TCL内のすべてのソースファイルを一覧表示するコマンド
- 30. ハドソン製のすべてのビルドを一覧表示するアプリケーション
Unixでは*フォルダ*はありません。 – tchrist
@tchrist、より具体的にしてください。 – shybovycha
Unixにはフォルダがありますが、フォルダはありません。フォルダーは私たちにベビートークのように聞こえる。 – tchrist