int array_id;
char* records[10];
// get the shared segment
if ((array_id = shmget(IPC_PRIVATE, 1, 0666)) == -1) {
perror("Array Creating");
}
// attach
records[0] = (char*) shmat(array_id, (void*)0, 0);
if ((int) *records == -1) {
perror("Array Attachment");
}
工作正常,但是當我試圖拆離我得到一個「無效參數」的錯誤。
// detach
int error;
if((error = shmdt((void*) records[0])) == -1) {
perror(array detachment);
}
有什麼想法嗎?謝謝
你怎麼知道'shmat'工作「很好」?你沒有做錯誤檢查...並且array_id被使用了未初始化。 *從不*發佈修改和不完整的代碼,*總是*完成後,我們可以編譯的實際代碼! – Jens
@Jens是的,他檢查錯誤是= -1。我對perror(數組detachment)部分感到困惑,這實際上是c中的一件事嗎? –
抱歉,我遺漏了錯誤,但在附加後我確實檢查了。我知道它工作正常,因爲我沒有得到任何錯誤,我也分配了一些字符串並打印出來。我被告知使用perror()而不是printf()O.o – Tim