我有一个程序需要在两个进程之间共享一个字符串。我已经声明了一个包含*char
数组的结构体。在主进程被fork之前,使用shmget
和shmat
分配了这个结构体。
typedef struct Queue
{
int index;
char *directory[10];
} Queue;
在其中的一个过程中,我尝试设置值:
data->dir_name
是一个*char
类型指针,将其设置为类似于"/data1"的字符串。queue->directory[i] = data->dir_name; // Option 1
queue->directory[i] = "foo"; // Option 2
我的问题是,上面的第一条和第二条语句有什么区别?当将
queue->directory[i]
设置为"foo"
时,其他进程可以看到它。然而,传递值data->dir_name
时却不行。提前感谢!
queue->directory[i]
之前的某个地方调用了free(data->dir_name)
?此外,data->dir_name
可能是一个自动变量。 - Eddy_Em