簡體   English   中英

如何使用fork獲取新創建的子進程的進程名稱和進程ID pid?

[英]How do get the process name & process id pid of newly created child process using fork?

我正在使用fork創建子進程。 現在,我想知道使用膩子的子進程的名稱和進程ID。 我需要使用哪個命令來獲取此信息。 我正在嘗試ps和pstree。 創建新的子進程時,如何給子進程命名? 是否可以使用任何linux / unix命令獲取此信息?

我想知道孩子活動了多少時間以及何時終止。 子進程的平均計時信息。

root@mx6q:~# ps aux|grep "childprogram"
ps: invalid option -- 'a'
BusyBox v1.20.2 (2014-03-13 11:47:37 CET) multi-call binary.

Usage: ps

Show list of processes

        w       Wide output
        l       Long output
        T       Show threads

root@mx6q:~#



root@mx6q:~# ps | grep "childprogram"
 1407 root      1908 S    grep childprogram
root@mx6q:~# ps | grep "childprogram"
 1409 root      1908 S    grep childprogram
root@mx6q:~# ps | grep "childprogram"
 1411 root      1908 S    grep childprogram

對於父母:

root@mx6q:~# readlink /proc/670/exe
.asoundrc                   .gvfs/
.bashrc                     adit-30-09-2014.vnclicense
.gstreamer-0.10/            enable_usb_dr_host_mode.sh
root@mx6q:~# readlink /proc/670/exe

但我無法在/ proc /中找到子pid? 這是什么意思?

您將其標記為C,並提到您是派生新流程的角色,因此在派生子代的父流程中您可以使用所有這些信息,但是您需要更改代碼以捕獲它。

  • 您擁有孩子的pid,因為它是通過fork在父對象中返回的。

  • 您(可能)具有孩子的名字,因為在大多數情況下,您是編寫exec調用的那個人。 如果沒有,則可以使用孩子的pid來readlink /proc/<pid>/exe

  • 如果您需要在運行過程中了解孩子的狀態,可以使用RUSAGE_CHILDREN選項調用getrusage

  • 如果您只想了解孩子的統計信息,則可以使用wait4等待它

嘗試這個:

$ ps xf

然后分析輸出,並使用grep sed和/或awk進行一些過濾。

我對BusyBox不太熟悉,因為我知道它是一個功能有限的小型發行版。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM