如何获得流程名称&使用fork进程新创建的子进程的id?

时间:2014-04-07 09:44:10

标签: c linux fork posix child-process

我使用fork来创建子进程。现在我想知道使用putty的子进程的名称和进程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?这是什么意思?

2 个答案:

答案 0 :(得分:1)

您将此标记为C,并提到您是分配新流程的参与者,因此您可以在父流程中获得所有这些信息,这些信息可以提供给孩子,但您需要更改代码才能捕获它。

  • 你有孩子的pid,因为它是由父母fork返回的。

  • 您(可能)有孩子的名字,因为在大多数情况下,您是撰写exec电话的人。如果没有,可以使用孩子的pid readlink /proc/<pid>/exe

  • 如果你需要知道孩子的统计数据,你可以使用RUSAGE_CHILDREN选项拨打getrusage

  • 如果你只想在孩子的完成后完成,你可以用wait4
  • 等待它。

答案 1 :(得分:-1)

试试这个:

$ ps xf

分析输出并使用grep sed和/或awk制作一些过滤器。

我对BusyBox不是很熟悉,因为我知道它是一个功能有限的小型发行版。