关于fork和if-else的问题

pli0825 2011-04-23 11:36:01
int main(){
pid_t pid;
if(pid = fork() == 0){
printf("child process \n");
}else if(pid > 0){
printf("paraent process \n");
}else if(pid < 0){
printf("fork() error\n");
}

//if(pid > 0)
printf("===========parent=========\n");
//if(pid == 0)
printf("===========child=========\n");

return 0;
}

linux下“printf("paraent process \n");”为什么没执行?????
...全文
162 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Arnold9009 2011-04-24
  • 打赏
  • 举报
回复
pid = fork() 不要放到if条件里,要放到外面
FF-天为我蓝 2011-04-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 thefirstz 的回复:]
if(pid = fork() == 0){
---------------------------
if((pid = fork()) == 0){
[/Quote]

改了你再试试!着两句话的运行和内核调度也有关系!有时是子进程在前,也有时是父进程在前!你可以和vfork()对比下!看看他们的区别!以及全局变量的 和局部变量的 变化!
Arnold9009 2011-04-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 thefirstz 的回复:]
if(pid = fork() == 0){
---------------------------
if((pid = fork()) == 0){
[/Quote]

up

不是非常清楚运算优先级的情况下,要多加括号
即使非常清楚运算优先级,也推荐适当的加一些括号,毕竟后续维护你代码的人不一定跟你一样清楚
李亚超 2011-04-24
  • 打赏
  • 举报
回复
if(pid = fork() == 0)
很是有问题
昵称很不好取 2011-04-24
  • 打赏
  • 举报
回复
if(pid = fork() == 0){
---------------------------
if((pid = fork()) == 0){

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧