Linux wait 函数实参为指针时,没有预期结果,原因及其解决办法
来源:互联网 发布:mysql timestamp 比较 编辑:程序博客网 时间:2024/06/07 16:00
在Linux/Unix中wait一般用在,用户主程序调用fork产生一个新的进程后,等待子进程执行完毕。在标准的Unix中wait的头文件定义为:
#include <sys/wait.h>
pid_t wait(int *statloc);
在Linux中,定义为:
/*come from /usr/include/sys/wait.h
Wait for a child to die. When one does, put its status in *STAT_LOC ....
*/
extert __pid_t wait (__WAIT_STATUS __stat_loc);
也就是wait的参数类型为int 的指针类型。
以下为一段程序。
在Ubuntu10.4 下的结果如下:
main pid is 1754,my ppid is 1265
child pid is 1755,my ppid is 1754
I will wait
no proecss waited
Wait返回的PID值为-1,也就是父进程,没有等待到子进程的结束。
把@1出的变量s1修改为:int s1。并在@2和@3中作相应的改动。
程序如下:
同样在在Ubuntu10.4 下的结果如下:
main pid is 1774,my ppid is 1265
child pid is 1775,my ppid is 1774
I will wait
my pid is 1774,waited pid is 1775,s1= 0
这里父进程ID为1774,子进程ID为1775,并准确等待到了子进程的结束。
原因:
如果一个函数的参数为指针,比如int f(int *p),则p的实参可以定义为,int * p 或者是 int p;
如果是前者在调用时用f(p),如果是后者在调用时,利用f(&p);都可以。
在这里为什么不一样,大家说一说?
- Linux wait 函数实参为指针时,没有预期结果,原因及其解决办法
- 函数调用参数为指针时,实参跟形参的问题
- 函数指针与实参推断
- strings命令没有预期的结果, 意味着异常!
- 数组名作为函数实参时要注意的问题
- 12、C++函数默认实参、函数指针
- 例题6-20,实参为指针数组
- c++中实参不能为空指针
- linux firefox flash没有声音的解决办法及原因
- RMAN-06059: 没有找到预期的归档日志 --解决办法
- 模板实参推断与函数指针
- 指针-形参与实参-函数传参
- 模板实参推断与函数指针
- fedora 14下uvc摄像头灰屏没有图像的问题原因及其解决办法
- mysql in函数结果不同预期,异常 null
- Linux wait函数解析
- linux wait函数解析
- linux C:wait函数
- 忧伤谁与分
- salesforce开发工程师 职位招聘
- fuse-dfs安装配置
- 大数据量,海量数据 处理方法总结
- 批处理(.bat)命令 备份MySQL数据库
- Linux wait 函数实参为指针时,没有预期结果,原因及其解决办法
- Bloom Filter 原理与应用
- Bloom Filter 原理与应用
- 【转载】P2P网络“自由”穿越NAT的“秘密”原理
- 你凭什么上北大 [作者:贺舒婷]
- Win32串口编程
- 刚刚做的一个 JS简单时间控件【JS时分秒时间控件】
- 修改表的默认值
- 解决 Failed to load the DLL D:/Oracle/OracleBI/server/Bin/nqsdbgatewayoci10g.dll. Check if ‘Oracle OCI 10G’ database client is ins