2013-05-02 58 views
0

工作時,我是新來的共享內存和香港專業教育學院想出了下面的代碼:「壞的系統調用」錯誤與共享內存

int main() 
{ 
    int perm=S_IRWXU|S_IRWXG|S_IRWXO; 
    int fd=shmget(IPC_PRIVATE,1024,IPC_CREAT|perm); 
    if(fd<0) 
    { 
    printf("error"); 
    _exit(0); 
    } 
    int* sum=(int*)shmat(fd,0,0); 
    if(*sum==1) 
    { 
    printf("error\n"); 
    _exit(0); 
    } 
    *sum=0; 
    printf("asjjsad=%d",*sum); 
    return 0; 
} 

當我運行此我得到壞系統調用

怎麼了?

我想分配總和爲0,並有一個子進程計算一個值,說sum1。然後我必須嘗試添加總和1。

你如何做到這一點?

+0

我編譯並運行你的代碼沒有任何錯誤,結果是正確的。 – richselian 2013-05-02 12:17:39

+0

哪條線給你「*壞系統調用*」? – alk 2013-05-02 14:33:15

+0

它只是說不好的系統調用。 – 2013-05-02 14:37:49

回答

1

假設在Cygwin,從Cygwin的Implementation Notes下段發生OP的問題,有助於:

的XSI IPC功能了semctl,semget子,執行semop,的shmat,了shmctl,shmdt,shmget的,了msgctl,msgget,msgrcv和msgsnd僅在cygserver運行時可用。