如何通过多个进程 C/C++ 访问同一变量

How to access the same variable by multiple processes C/C++

本文关键字:访问 C++ 变量 何通过 进程      更新时间:2023-10-16

我最近开始学习如何在Linux下用C编程,并编写了以下代码来创建一些进程:

void generate()
{    
  int pid;
  for(int i=1;i<=10;i++)
  {
    pid = fork();  
  }
  if (pid<0)
  {
    printf("Error Fork");
    exit(1);
  }
  if(pid == 0)
  {
    printf("Fiu pid: %d --- Parinte pid: %dn", getpid(), getppid());
    //count ++;
  }
  if(pid > 0 )
  {
    printf("Parinte pid: %dn", getpid());
    //count++;
    wait();
  }
}

问题是:我应该如何声明/递增 count 变量以打印函数创建的进程总数?

很简单。 Fork为每个父母产生一个孩子。 因此,答案是 2^10 或 1024。

fork后面放一个printf,并注释掉其他无关的输出。 运行方式

./a.out | sort | uniq | wc

输出为 1024。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
void generate()
{
  int pid;
  for(int i=1;i<=10;i++)
  {
    pid = fork();
    printf("%dn", getpid());
  }
  if (pid<0)
  {
    //printf("Error Fork");
    exit(1);
  }
  if(pid == 0)
  {
    //printf("Fiu pid: %d --- Parinte pid: %dn", getpid(), getppid());
    //count ++;
  }
  if(pid > 0 )
  {
    //printf("Parinte pid: %dn", getpid());
    //count++;
    wait(NULL);
  }
}
int main(int argc, char *argv[])
{
    generate();
    return(0);
}

可能有更好的方法,但是..每次创建子项时,都可以将新行/字符附加到临时文件。然后,您只需要计算文件的行/字符即可。