Linux进程创建实验
Linux进程创建实验过程
Linux进程创建
实验目的
1. 了解有关Linux系统调用;
2. 学习有关Linux的进程创建,理解进程创建后两个并发进程的执行。 实验内容
在Linux环境下,用c语言编程,使用系统调用fork创建进程一个子进程。观察其运行的结果。
实验提示:LINUX系统调用
1. 进程控制的系统调用
l fork系统调用创建新的子进程
格式: pid=int fork()
fork调用返回时,系统中已有两个用户级环境完全相同的进程存在,这两个进程从fork调用中得到的返回值不同,其中子进程得到的返回值为零,父进程得到的返回值是新创建子进程的进程标识号。
l exec系统调用
格式:(六种)
int execl(path,arg0,arg1,…,argn,(char *)0)
char *path, *arg0, *arg1, …, *argn ;
exec调用进程的正文段被指定的目标文件的正文段所覆盖,其属性的变化方式与fork成功后从父进程那里继承属性的方式几乎是一样的。系统中绝大多数命令都是通过exec来执行的,不但shell进程所创建的子进程使用它来执行用户命令,shell进程本身和它的祖先进程也是用exec来启动执行的。 l exit系统调用终止进程执行
格式:void exit(status)
int status ;
参数status是调用进程终止时传递给其父进程的值。如调用进程还有子进程,则将其所有子进程的父进程改为1号进程。
l wait系统调用等待子进程暂仃或终止
格式:int wait(stat_loc) int wait((int *)0)
int stat_loc ;
wait调用将调用进程挂起,直到该进程收到一个被其捕获的信号或者它的任何一个子进程暂仃或终止为止。如果wait调用之前已有子进程暂仃或终止,则该调用立即返回。
l lockf 锁定文件
格式:int lockf(fd,fuction,size)
Linux进程创建实验过程
int files, fuction; long size; fd – 锁定文件标识
function=0不锁定表示
=1锁定
=2测试和锁定
=3测试有否被锁定
size --锁定或解锁的字节数,0表示从文件的当前位置到文件尾。 l C Program forking a separate process
#include <stdio.h>
void main(int argc, char *argv[ ])
{ int pid;
pid=fork(); /* fork child process */
if (pid<0){ fprintf(stderr, “Fork Failed”); exit(-1); }
else if (pid==0) { execlp(“/bin/ls”,”ls”,NULL); } /* child process */ else { wait(NULL);
printf(“child Complete”);
exit(0);
} /*parent process */
}
2.进程通信的系统调用
l pipe系统调用
格式: int pipe (filedes)
int filedes [2];
l 消息机制
Msgid=msgget(key,msgflg)
key_t key;
int msgflg;
Msgctl(msgid, cmd, buf)
int msgid, cmd;
msgqid_ds #buf;
msgsnd(msgid, msgp, msgsz, msgflg)
int msgid;
struct msgbuf *msgp;
int msgsz, msgflg;
msgrcv (msgid, msgp, msgsz, msgtyp, msgflg );
int msgid;
struct msgbuf *msgp;
int msgsz;
long msgtyp;
int msgflg;
管道通信程序#include <stdio.h>
Linux进程创建实验过程
#include <fcntl.h>
char parent[]={“A message from parent .”};
char child[]={“A message from child .”};
main()
{int chan1[2],chan2[2];
char buf[100];
if (pipe(chan1)==-1 || pipe(chan2)==-1) errexit(“pipe”); if (fork())
{close(chan1[0]); close(chan2[1]);
write(chan1[1],parent,sizeof parent);
close(chan1[1]);
read(chan2[0],buf,100);
printf(“parent process : %s \n”,buf);
close(chan2[0]);
}
else
{close(chan1[1]); close(chan2[0]);
read(chan1[0],buf,100);
printf(“child process : %s \n”,buf);
write(chan2[1],child,sizeof child);
close(chan2[1]); close(chan1[0]);
}
}
…… 此处隐藏:373字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [行业范文]美好的法语句子
- [行业范文]描写露珠的句子
- [行业范文]精彩禅语句子图片
- [行业范文]关于满嘴谎言的句子
- [行业范文]关于安静的句子48句
- [行业范文]关于小河的句子
- [行业范文]描写稻田的句子
- [行业范文]思念好朋友的句子
- [行业范文]赞美雪的句子
- [行业范文]早上激励人心的句子
- [行业范文]失恋忧伤的句子
- [行业范文]努力积极向上的句子
- [行业范文]对工作心灰意冷的句子
- [行业范文]失恋让人心疼的句子
- [行业范文]描写珍惜青春的句子
- [行业范文]表达思念的句子简短
- [行业范文]关于父爱的句子范例
- [行业范文]浪漫的英语句子
- [行业范文]关于周末的句子
- [行业范文]思念牵挂的句子
- 有关感恩班会课件简短(二篇)(感恩班会
- 2025年初二下乡军训心得体会800字(15篇
- 关于新员工培训方案汇编(关于新员工培
- 精选高考生寒假学习计划书(精)(高考生
- 毕业实训报告心得体会(3篇)(实训报告心
- 银行工作感悟及心得范文怎么写(四篇)(
- 精选领导干部个人政治画像报告通用(七
- 精选超市11.11活动促销方案(精品超市品
- 2025年怎么做自我介绍汇总(5篇)(至2025
- 最新企业错峰生产方案(26篇)(山西企业
- 最新暑期三下乡社会实践调研报告范本(
- 最新幼儿园大班教育教学总结怎么写(最
- 最新教师节主持词小学(优秀9篇)(教师节
- 关于小学安全教育教学方案(推荐)(关于
- 员工信模板范文怎么写(五篇)(员工信息
- 最新保险销售离职申请书(十六篇)(最新
- 最新XX小学防校园欺凌工作方案怎么写(2
- 有关特岗教师辞职信范文(推荐)(特岗教
- 精选党的建设工作要点简短(党的建设的
- 如何写安康杯竞赛活动总结汇总(4篇)(安




