小编Piy*_*yal的帖子

算法复制堆栈

是否可以在不使用任何外部堆栈或阵列的情况下将堆栈复制到另一个堆栈中?

我知道它可以使用递归来完成,但是在提到的约束内是否有任何其他可能的解决方案?

c algorithm stack data-structures

6
推荐指数
1
解决办法
8314
查看次数

fork()的工作

我最近fork()在C中学习了函数.因为这个函数创建了两个并发进程,这两个进程共享内存.所以我有以下代码:

#include<stdio.h>
int main()
{
  int pid,i;
  i=0;
  pid=fork();
  if(pid==0)
    {
      i++;
      printf("child process:: address of i:%u value of i:%d\n",(int)&i,i);
    }
  else if(pid>0)
    {
      wait(NULL);
      i--;
      printf("parent process:: address of i:%u value of i:%d\n",(int)&i,i);
    }

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

    child process:: address of i:3215563096 value of i:1
    parent process:: address of i:3215563096 value of i:-1
Run Code Online (Sandbox Code Playgroud)

但是因为每次子进程首先执行所以内存位置3215563096的值应该变为+1,而父进程的对比度为0.

我的预期输出是:

    child process:: address of i:3215563096 value of i:1
    parent process:: address of i:3215563096 value of i:0
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我哪里错了吗?

c linux fork

3
推荐指数
1
解决办法
621
查看次数

标签 统计

c ×2

algorithm ×1

data-structures ×1

fork ×1

linux ×1

stack ×1