我在节目制作方面仍然相当不容乐观,我遇到了一个我自己无法解决的问题,所以我试图在网上寻求帮助,却找不到任何解决方案。
我目前正在尝试在linux中创建一个程序,该程序利用共享内存在两个程序之间传输整数。我可以成功传输50或99之类的小整数,但是当我尝试从段中读取它时,我无法写入大于100的值,而它们不会变成完全不同的随机值。
我一直坐着看着我的代码几个小时,无法弄明白。 您是否有更熟练的程序员可以就这个问题的原因给我一些建议?
由于
这是第一个将整数testValue写入段的程序,但是如果测试值略高于100表示150,则输出将变为另一个值。小于100的值通常起作用。
ps = shmPointer;
for(Count = 1; Count <= atoi(argv[1]); Count++)
{
*ps++ = testValue;
}
*ps = (char)NULL;
while(*shmPointer != (char)'*')
{
sleep(1);
}
对于分段大小,我做了一个
#define SHMSZ 100
我的shmget电话是shmid = shmget(key, SHMSZ, IPC_CREAT | 0666);
下面是另一个程序的代码,它检索存储在段中的整数:
ps = shmPointer;
for(ps = shmPointer; *ps != (char)NULL; ps++)
{
printf("Value: %d\n", (int)*ps)
}
printf("\n");
*shm = '*';
答案 0 :(得分:0)
假设ps的类型为“ char *”,则您尝试执行的操作将不起作用。您不能在char中存储任意整数(带符号的char中只能存储-128到+127)。 – FredK