首页 热点专区 义务教育 高等教育 出国留学 考研考公

linux多进程,每个进程都有1个main函数吗

发布网友

我来回答

2个回答

热心网友

简单的实现,没有添加同步机制,回头再添加上去,而且,我是在不同终端里面写的,你可以把两段代码,一个放到父进程,一个放到子进程...就可以了你说的这些API,自己man 一次,看看说明就知道用法了.... 楼上说的对齐的问题,我没有太注意..不过,不管你要共享什么,一个sizeof看看大小,一个memcpy拷贝,你就作为数据直接拷贝到共享内存区域就OK了...另外一边再拷贝回来,用一个结构体类型的指针指向你拷贝回来的数据,不就给这部分内存再规划成一个结构体了。。至于具体的, KEY 的含义,你需要了解linux的ipc机制。 #include #include #include #include #define BUF_SIZE 100 #define KEY 99 int main(void) { int shmid; char *shmptr; shmid=shmget(99,BUF_SIZE,IPC_CREAT|0666); if(shmid==-1) { printf("Shared Memory Created error...\n");exit(0); } shmptr=shmat(shmid,NULL,0); if(shmptr==(void*)-1) { printf("shmat error,shmptr= %d \n",shmptr); exit(1); } while(1) { printf("type strings into Shared Memory:"); fgets(shmptr,BUF_SIZE,stdin); } return 0; } 下面这段就每隔10秒钟扫描共享内存区域的内容: #include #include #include #include #define BUF_SIZE 100 #define KEY 99 int main(void) { int shmid; char *shmptr; shmid=shmget(99,BUF_SIZE,IPC_CREAT|0666); if(shmid==-1) { printf("Shared Memory Created error...\n");exit(0); } shmptr=shmat(shmid,NULL,0); if(shmptr==(void*)-1) { printf("shmat error,shmptr= %d \n",shmptr); exit(1); } while(1) { printf("Infomation in Shared Memory:"); printf("%s \n",shmptr); sleep(10); } return 0; }

热心网友

按照我的理解

不管是linux还是window系统还是其他系统;

每个进程都是的函数,因此每个进程都会需要一个int32 main(int argc char *argv)作为入口函数;

就像在window下一样,每个.exe可执行文件都会有一个main函数一样,进程间没有耦合,数据也不共享;

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com