私はCで書かれたプログラムを持っています。これはpopenを使って別のプログラムを開きます。私は、そのプログラムのピッド、またはそれのための何らかのハンドラを取得したいので、一定の制限時間の後にそれを強制終了するか、またはいくつかのRAMを超えて、そしてstdoutの制限を超えています。 PIDを必要とするptraceでこれを行う必要があると私は考えていますが、これはどのように取得するのか分かりません。C - popenで開かれたプロセスのPIDを取得する
3
A
答えて
6
PIDを返すpopen
という独自の実装を作成してください。それは既存のpopen
の周りのいくつかの狂ったハッカーよりずっと醜いです。ネット全体にpopen
の実装のソースコードがあります。 Here's one。
0
ptraceを使用せずに、ulimitsやその他のトリックを使用して目的の機能を実現することもできます。あなたはコマンドを"sh -c 'ulimit [ulimit strings]; whatever-command'"
のようなものに書くことでこれを行うことができます。 ulimit -v
はRAM制限を処理します。 CPUの時間制限(ulimit -t
)は時間制限に近づく可能性があります。そうでない場合は、popen
を書き換える場合は、setitimer
に電話をかけてください。 stdoutはそれほど簡単ではありません。しかし、あなたがシェルリダイレクトでstdoutを記録している場合、私はulimit -f
がそれを行うと思います。あなたが親で子供の標準出力を読んでいるなら、あなたはそれを自分で追跡し、あまりにも長くなると信号で殺すことができます。
関連する問題
- 1. Pythonでプロセスを開始し、PIDを取得する(Linux)
- 2. シェルスクリプトでフォークされた子プロセスからプロセスID(pid)を取得する方法
- 3. サブプロセスpython + bashでプロセスのpidを取得
- 4. 子プロセスからPIDを取得
- 5. プロセスを開始し、そのPIDを取得
- 6. nohupで起動されたプロセスのPIDをssh経由で取得します
- 7. クラス名でPIDを取得し、取得したプロセスをkillする方法
- 8. Bashの別のプロセスにパイプされるプロセスのPIDを取得するには?
- 9. 与えられたPIDの子プロセスのリストをプログラムで取得する
- 10. Bashでevalから起動されるプロセスのPIDを取得するには?
- 11. pidからプロセスの詳細を取得する方法
- 12. pidまたはハンドルからプロセス名を取得
- 13. PHPはプロセスのPIDを取得し、それを殺す
- 14. 子プロセスが兄弟のPIDを取得することは可能ですか?
- 15. linuxのpidからプロセスのパスまたは名前を取得する方法
- 16. gidでプロセスPIDを取得するには?
- 17. C#で起動したアプリケーションのPIDを取得するには
- 18. SSHサーバー - sshdプロセス転送ポートのpidを取得する#N
- 19. デバッガを接続せずにPIDでプロセスのマシンコードを取得
- 20. Makefileによって開始されたバックグラウンドプロセスのPIDを取得する
- 21. 実行中のfirefoxプロセスのPIDを取得
- 22. エリクシール - スーパーバイザのプロセスのすべてのPIDを取得
- 23. はpopenのでプロセスを開くと、私は気の利いた小さな機能に取り組んでいるPID
- 24. iOSシステムのプロセスpidから他のアプリケーションアイコンを取得する方法は?
- 25. Mac OSでプロセスのユーザー名をPIDで取得する方法は?
- 26. C++シェル()でPIDを取得していますか?
- 27. プロセスのPID番号を取得し、Pythonでkillするよりも
- 28. 開かれたすべてのフォームを取得する、C#?
- 29. Cで子PIDを取得するには?
- 30. Bash/ps:特定のプロセスの実行中の "myscript.sh"子プロセスのPIDを取得する
s/crazy/horrible :-) –
ありがとうございました。最高のソリューションと思われます。 – Paris