簡體   English   中英

為什么我不能使用 atoi 為 shmarray 賦值?

[英]Why cant i assign value to shmarray using atoi?

這是我第一次嘗試將共享 memory 用於 IPC,除了我無法使用atoiargv分配給shmarray之外,它工作正常。 正在分配直接值。 有人可以幫忙嗎?

int main(int argc, char* argv[])
{
  int memoryid;
  int* shmarray;
  int pid;

  memoryid=shmget(IPC_PRIVATE, 5*sizeof(int), 0666 | IPC_CREAT | IPC_EXCL);
  if(memoryid<0)
  //print error

  printf("Allocated %d, at id %d\n", (int)5*sizeof(int), memoryid);  
  pid=fork();
  shmarray=(int*) shmat(memoryid, NULL, 0);

  if(*shmarray<0)
  //print error

  printf("Process %d attached the segment %d\n", getpid(), memoryid);
  if(pid>0)
  {
    printf("%d \n", argc);

   // here is where the segmentation fault occurs. If i give values directly, it works fine'

    for(int i=0; i<argc; ++i)
    {
      shmarray[i]= atoi(argv[i+1]);
    }
    printf("Server has filled %d %d %d %d %d in shared memory...\n",  shmarray[0], shmarray[1], shmarray[2], shmarray[3], shmarray[4]);
    shmdt((void *) memoryid);
  }
   
}

這是我第一次嘗試將共享 memory 用於 IPC,除了我無法使用atoiargv分配給shmarray之外,它工作正常。 正在分配直接值。 有人可以幫忙嗎?

int main(int argc, char* argv[])
{
  int memoryid;
  int* shmarray;
  int pid;

  memoryid=shmget(IPC_PRIVATE, 5*sizeof(int), 0666 | IPC_CREAT | IPC_EXCL);
  if(memoryid<0)
  //print error

  printf("Allocated %d, at id %d\n", (int)5*sizeof(int), memoryid);  
  pid=fork();
  shmarray=(int*) shmat(memoryid, NULL, 0);

  if(*shmarray<0)
  //print error

  printf("Process %d attached the segment %d\n", getpid(), memoryid);
  if(pid>0)
  {
    printf("%d \n", argc);

   // here is where the segmentation fault occurs. If i give values directly, it works fine'

    for(int i=0; i<argc; ++i)
    {
      shmarray[i]= atoi(argv[i+1]);
    }
    printf("Server has filled %d %d %d %d %d in shared memory...\n",  shmarray[0], shmarray[1], shmarray[2], shmarray[3], shmarray[4]);
    shmdt((void *) memoryid);
  }
   
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM