当前位置: 技术问答>linux和unix
主进程和子进程共享链表的问题
来源: 互联网 发布时间:2016-01-12
本文导语: #include #include #include typedef struct inode1{ int data; struct inode1 *next; }inode; inode *head=NULL; main() { inode *p=NULL,*q=NULL; int i=10,pid; for(i;i>=1;i--) { p=(...
#include
#include
#include
typedef struct inode1{
int data;
struct inode1 *next;
}inode;
inode *head=NULL;
main()
{
inode *p=NULL,*q=NULL;
int i=10,pid;
for(i;i>=1;i--)
{
p=(inode *)malloc(sizeof(inode));
if(p==NULL)
exit(0);
p->data=i;
p->next=head;
head=p;
p=NULL;
}
printf("@@@@@@@@@@@@@@@@@@@@@@@n");
if(pid=fork()10;i--)
{
p=(inode *)malloc(sizeof(inode));
if(p==NULL)
exit(0);
p->data=i;
p->next=head;
head=p;
p=NULL;
}
}
else
{
sleep(60);
printf("-------------");
}
sleep(2);
p=head;
while(p!=NULL)
{
printf("p->data=[%d]n",p->data);
p=p->next;
}
p=head;
while(p!=NULL)
{
q=p->next;
free(p);
p=q;
}
}
打印时为什么总是每个节点都打印双份
#include
#include
typedef struct inode1{
int data;
struct inode1 *next;
}inode;
inode *head=NULL;
main()
{
inode *p=NULL,*q=NULL;
int i=10,pid;
for(i;i>=1;i--)
{
p=(inode *)malloc(sizeof(inode));
if(p==NULL)
exit(0);
p->data=i;
p->next=head;
head=p;
p=NULL;
}
printf("@@@@@@@@@@@@@@@@@@@@@@@n");
if(pid=fork()10;i--)
{
p=(inode *)malloc(sizeof(inode));
if(p==NULL)
exit(0);
p->data=i;
p->next=head;
head=p;
p=NULL;
}
}
else
{
sleep(60);
printf("-------------");
}
sleep(2);
p=head;
while(p!=NULL)
{
printf("p->data=[%d]n",p->data);
p=p->next;
}
p=head;
while(p!=NULL)
{
q=p->next;
free(p);
p=q;
}
}
打印时为什么总是每个节点都打印双份
|
主进程和子进程共享链表??????? my god!! !!
It can not be work like this..............I am sleeping just now...oh..
It can not be work like this..............I am sleeping just now...oh..