![](/img/trans.png)
[英]why cant we assign a value to global variables using an expression in C ?
[英]Why cant i assign value to shmarray using atoi?
這是我第一次嘗試將共享 memory 用於 IPC,除了我無法使用atoi
從argv
分配給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,除了我無法使用atoi
從argv
分配給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.