当前位置: 技术问答>linux和unix
这2段很短的代码问题在哪里,请大侠来阿,急
来源: 互联网 发布时间:2016-04-13
本文导语: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define BUF_SIZE 1024 7 #define MYKEY 24 8 int main(void) 9 { 10 int shmid; 11 char *shmptr; 12 if((shmid=shmget(MYKEY,BUF_SIZE,IPC_CREAT))==-1) 13 { 14 pri...
1 #include
2 #include
3 #include
4 #include
5 #include
6 #define BUF_SIZE 1024
7 #define MYKEY 24
8 int main(void)
9 {
10 int shmid;
11 char *shmptr;
12 if((shmid=shmget(MYKEY,BUF_SIZE,IPC_CREAT))==-1)
13 {
14 printf("shmget error!n");
15 exit(1);
16 }
17 if(shmptr=shmat(shmid,0,0)==(void*)-1)
18 {
19 fprintf(stderr,"shmat error !n");
20 exit(1);
21 }
22 while(1)
23 {
24 scanf("input string:%sn",shmptr);
25 }
26 exit(0);
27 }
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #define BUF_SIZE 1024
8 #define MYKEY 24
9 int main(void)
10 {
11 int shmid;
12 char *shmptr;
13 if((shmid=shmget(MYKEY,BUF_SIZE,IPC_CREAT))==-1)
14 {
15 printf("shmget error!n");
16 exit(1);
17 }
18 if((shmptr=shmat(shmid,0,0))==(void*)-1)
19 {
20 fprintf(stderr,"shmat error!n");
21 exit(1);
22 }
23 while(1)
24 {
25 printf("string:%sn",shmptr);
26 sleep(3000);
27 }
28 exit(0);
29 }
这2段代码每次在附加共享内存的时候就出问题了
为什么?
我需要这2段程序完整的运行,我实在不知道问题在哪里。
情大侠帮忙下。
还有就是我用的是fedora 9 GCC4。3的编译器,不过以近加入老板本的库。
~
|
因为你第一个程序的17 if(shmptr=shmat(shmid,0,0)==(void*)-1) 少了一对括号,导致shmptr其实是0
改成if((shmptr=shmat(shmid,0,0))==(void*)-1)就OK了
改成if((shmptr=shmat(shmid,0,0))==(void*)-1)就OK了
|
问题出在写共享内存的部分
1) == 的优先级高于 =, 楼上已经说过
2) scanf 的第1个参数是格式, "input string:"应该不是你的本意
1) == 的优先级高于 =, 楼上已经说过
2) scanf 的第1个参数是格式, "input string:"应该不是你的本意