代码如下:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
if (!vfork()){
while(1){
sleep(1);
}
}
return 0;
}
实验结果:
[root@localhost some_func]# gcc task_d_status.c -o task_d_status
[root@localhost some_func]# ./task_d_status &
[1] 1687
[root@localhost some_func]# ps -aux | grep task_d_status
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 1687 0.0 0.0 3920 328 pts/16 D 14:22 0:00 ./task_d_status
root 1688 0.0 0.0 3920 328 pts/16 S 14:22 0:00 ./task_d_status
root 1690 0.0 0.0 103252 868 pts/16 S+ 14:22 0:00 grep task_d_status
[root@localhost some_func]# cat /proc/1687/status
Name: task_d_status
State: D (disk sleep)
Tgid: 1687
Pid: 1687
PPid: 3037
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
Utrace: 0
FDSize: 256
Groups: 0 1 2 3 4 6 10
VmPeak: 4040 kB
VmSize: 3920 kB
VmLck: 0 kB
VmHWM: 328 kB
VmRSS: 328 kB
VmData: 44 kB
VmStk: 88 kB
VmExe: 4 kB
VmLib: 1704 kB
VmPTE: 32 kB
VmSwap: 0 kB
Threads: 1
SigQ: 2/256254
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 0000000000000000
CapInh: 0000000000000000
CapPrm: ffffffffffffffff
CapEff: ffffffffffffffff
CapBnd: ffffffffffffffff
Cpus_allowed: 0001
Cpus_allowed_list: 0
Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000003
Mems_allowed_list: 0-1
voluntary_ctxt_switches: 1
nonvoluntary_ctxt_switches: