问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言多进程编程

发布网友 发布时间:2022-04-30 16:24

我来回答

3个回答

热心网友 时间:2022-06-27 09:39

多进程这个词用得比较少,听过来有点不熟悉。你这个程序在linux下应该很容易实行,就是个进程间通信的问题,管道、消息队列、共享内存都可以,可以找找相关资料。昨天失言不好意思。
三个源文件分别为1.c、2.c、3.c一个头文件share.h。
share.h:
//共享的内存,两个数组
typedef struct{
int a[2];
int b[2];
int id;
}share_use;

1.c:
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/shm.h>

#include"share.h"

int main(){
void *shared_memory = (void *)0;
share_use *share_stuff;
int shmid;

shmid=shmget((key_t)1234,sizeof(share_use),0666|IPC_CREAT);//创建共享内存
if(shmid==-1){
fprintf(stderr,"共享内存创建失败!\n");
exit(1);
}

shared_memory = shmat(shmid, (void *)0,0);//让进程可以访问共享内存
if(shared_memory == (void *)-1){
fprintf(stderr,"启用共享内存失败!\n)";
exit(1);
}
printf("Memory attached at %X\n",(int)shared_memory);

share_stuff = (share_use *)shared_memory;
share_stuff->id=0;
share_stuff->a[0]=1;
share_stuff->a[1]=2;
while(1){
if(share_stuff->id)
exit(0);
sleep(10);
}
}

2.c:
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/shm.h>

#include"share.h"

int main(){
void *shared_memory = (void *)0;
share_use *share_stuff;
int shmid;

shmid=shmget((key_t)1234,sizeof(share_use),0666|IPC_CREAT);//创建共享内存
if(shmid==-1){
fprintf(stderr,"共享内存创建失败!\n");
exit(1);
}

shared_memory = shmat(shmid, (void *)0,0);//让进程可以访问共享内存
if(shared_memory == (void *)-1){
fprintf(stderr,"启用共享内存失败!\n");
exit(1);
}
printf("Memory attached at %X\n",(int)shared_memory);

share_stuff = (share_use *)shared_memory;
share_stuff->b[0]=share_stuff->a[0]*100;
share_stuff->b[1]=share_stuff->a[1]*100;
while(1)
{
if(share_stuff->id)
exit(0);
sleep(10);
}
}
3.c:
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/shm.h>

#include"share.h"

int main(){
void *shared_memory = (void *)0;
share_use *share_stuff;
int shmid;

shmid=shmget((key_t)1234,sizeof(share_use),0666|IPC_CREAT);//创建共享内存
if(shmid==-1){
fprintf(stderr,"共享内存创建失败!\n");
exit(1);
}

shared_memory = shmat(shmid, (void *)0,0);//让进程可以访问共享内存
if(shared_memory == (void *)-1){
fprintf(stderr,"启用共享内存失败!\n");
exit(1);
}
printf("Memory attached at %X\n",(int)shared_memory);

share_stuff = (share_use *)shared_memory;
printf("共享内存中有元素:%d , %d",share_stuff->b[0],share_stuff->b[1]);
share_stuff->id=1;
return 0;
}
linux或unix环境下编译

热心网友 时间:2022-06-27 09:39

多进程并不是没有。不过楼主的这个问题用多进程确实是有点杀鸡用牛刀的意思,完全可以用多线程解决。这东西可不是闹着玩(特别是多进程)的,能写出来非要一定功底不可,要解决好进程或线程间的同步问题。

热心网友 时间:2022-06-27 09:40

#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>

int main(int args,char*argv[])
{
int arr[10]={1,2,3,4,5,6,7,8,9,0};
pid_t pid=0;
pid=vfork();
if(pid==0)
{
int i;
for(i=0;i<10;i++)
{
a[i]*=100;
sleep(1);
}
}
else if(pid>0)
{
int i;
while(1){
for(i=0;i<10;i++)
{
printf("%d ",arr[i]);
}
}
}
else{printf("vfork failed");}
return 0;
}

以上是在linux下的多进程
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 什么软件可以让没有手机卡的手机给别人打电话?我有无线,没有手机卡。那个人有卡没有网。 没有手机卡,怎么才能打电话 我现在只有网路却没有sim卡,急需联系一个人,对方无网络。有没有有什么软件可以用网给对方打电话 平安普惠贷款还款日到了,可是我身份证和银行卡都丢了,扣款账号不能用了怎么办? 平安普惠贷款可以更换还款账号吗?谢谢 平安普惠怎么解除绑定的银行卡 平安普惠怎么更换银行卡 我在平安普惠贷款时绑定的还款银行卡掉了怎么办? 平安普惠换卡还扣钱 我在平安惠普的贷款到期因老银行卡坏了现在怎么还上 平安普惠可以更换还款人吗? 我的手机小米三开了儿童模式,但是忘记密码了,怎么办?&#xF64F;&#xF64F; 请问平安普惠怎么换卡还款 如何上传190KB格式JpG图片 数据管理可以采用什么软件呀? 数据管理软件有哪些 烤冷面的面是用五得利面粉做的吗 网上卖的山药干是怎么制作的 蝴蝶的翅膀上的花纹像什么(排比句) 填空什么,花 怎么在win7环境下用C语言写多进程 linux简单的C语言程序,多进程,为什么存在死循环的时候不打印字符?死循环明明在打印语句的后面呀? 我如果把我的电脑主机换了,那我的电脑IP会改变吗? C语言多进程改变变量问题 硬盘换在其他电脑主机,ip和mac地址会改变吗? 我把别人的主机装在自己家的电脑上,电脑的ip地址会更换吗? 同一个网线是不是换台主机ip就会变啊我的变了还上不去网了怎么回事,我该怎么办 在linux下用c语言实现用多进程同步方法演示“生产者-消费者”问题 请问怎么在win7环境下用C语言写多进程?(可以的话,请附上简单代码,谢谢!) 每台主机的IP号是不是永远不变的? C语言同时执行不同过程可以吗? 在控制台程序下,如何实现c或者c++的多进程 C/C++ 如何监控多个进程,实现崩溃自动重启? 当一台主机从一个网络移到另一个网络时,IP地址和MAC地址可改变吗? 用多进程解决生产者消费者问题,用C或C++语言实现 cpu换了电脑ip地址会不会变 多进程并发售票 用c语言写 在linux下c语言编程有关进程的问题 香港影片,女主角家有钱,被人在桌子上*,坏人被一*爆头,男主角演过仙鹤神针电视剧 什么是多线程、多进程?