我一直都认为fork出来的子进程分配出来的ID号数字应该是大于其父进程的ID号数字的。
以前看到的各种ps输出的确也是如此。
但是今天我遇到了一个奇怪的现象: 给出结果,然后说一下我的系统环境:
wgzhao@wgzhao-t23:\~$ ps -ef |grep tm |grep -v grep
wgzhao 1683 16379 0 14:32 pts/0 00:00:00
./tm2008beta_chs.exe 子进程号是1683,父进程是16379。尝试过几次,都是如此。尝试过别的程序,没有发现这个问题。
下面详细说一下我当时测试环境:
系统是全新安装的Debian 5.0,X11是自带的XFCE4。
因为想测试兼容内核效果怎么样,安装了最新的kernel_2.6.23-0.2.4uk_i386.deb
和wine_1.0-0.2.4uk_i386.deb。
发生上述情况的时候,也是用的这个核心启动的。
但是运行的是腾讯最新的TM程序,但是程序运行有问题,一直死在那里。
$ ./tm2008beta\_chs.exe
err:module:find_forwarded_export module not found for forward
'gdi32.GdiTransparentBlt' used by L"msimg32.dll" wine: Unhandled page
fault on read access to 0x003a005a at address 0x414230 (thread 00dc),
starting debugger...
测试了其他一些Windows应用程序,比如Pietty,Fetion2008等,没有发生上述子进程ID号数字小于父进程的ID号数字。
不过这些Windows程序运行都成功,而不像tm2008一下,一直死在哪里。
我现在一时无法得到一个确定的答案说子进程ID号数字一定大于其父进程的,不过不管怎样,现在这个倒是一个很奇异的现象,有谁能说说吗?