1 / 15
文档名称:

linux系统编程实验.ppt

格式:ppt   大小:123KB   页数:15页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

linux系统编程实验.ppt

上传人:w447750 2018/5/31 文件大小:123 KB

下载得到文件列表

linux系统编程实验.ppt

相关文档

文档介绍

文档介绍:Linux 系统编程
Linux下C语言编程方法
1、编译方法

gcc – o hello
2、运行方法
在当前目录下敲入 Hello
或者./hello ./表示当前目录
一进程的基本介绍1
1、取得进程PCB的标识 getpid() getppid()
2、创建进程 fork() exec()
3、进程的同步 wait()
4、进程的终止 exit()
进程PCB的标识
getpid的作用很简单,就是返回当前进程的进程ID,请大家看以下的例子:
#include<sys/> /* 提供类型pid_t的定义*/
#include<> /* 提供函数的定义*/
pid_t getpid(void);
Int getpid(void); 同理getppid()
/* */
#include<> /* 提供函数的定义*/
Main()
{ printf(“ my parent ID is:%d\n”,getppid());
printf(“my ID is:%d\n”,getpid());
}
创建进程—fork命令
fork系统调用的作用是复制一个子进程。当一个进程调用fork后,完成后就出现两个几乎一模一样的进程(克隆)。先看如下例子/* */的运行结果:
#include<sys/> /* 提供类型pid_t的定义*/
#include<> /* 提供函数的定义*/
pid_t fork(void);
Int getpid(void);
#include<> /* 提供函数的定义*/
Main()
{ int pid;
printf(“one\n”);
pid=fork();
printf(“my ID is:%d\n”,getpid());
}
Printf(“one\n”);
Pid=fork();
Printf(“two\n”);
输出字符“one”
A进程
fork创建子进程后,父子进程在内
存不同的地方。代码完全一样,
克隆人。并且pc指针指向fork后
的下一个操作(赋值)。Pid的值在父
子进程中的值不相同。
Printf(“one\n”);
Pid=fork();
Printf(“two\n”);
A进程(父)
Printf(“one\n”);
Pid=fork();
Printf(“two\n”);
B进程(子)
Pid>0
Pid=0
父子进程的区别除了进程标志符pID不同
外,变量pid的值也不相同,pid存放的
是fork的返回值。fork调用的一个奇妙
之处就是它仅仅被调用一次,却能够返回
两次,它可能有三种不同的返回值:
,fork返回新创建子进程的
进程ID;
,fork返回0;
,fork返回一个负值;
/* */
#include<sys/>
#inlcude<>
main()
{ pid_t pid;
/*此时仅有一个进程*/
pid=fork();
/*此时已经有两个进程在同时运行*/
if(pid<0)
printf("error in fork!");
else if(pid==0)
printf("I am the child , my process ID is %d\n",getpid());
else
printf("I am the parent, my process ID is %d\n",getpid());
}
思考如下两个程序,判别总共有多少并发进程?能否画出其进程的家族图
Main()
{fork();
fork();
fork();
}
Main()
{
for(;;) fork();
}
Main()
{
fork();
fork();
}
创建进程—execl命令
Fork程序只能赋值一个副本,而exec可以运行一个新的程序,并覆盖原先调用的程序空间。
#include<> /* 提供函数的定义*/
Int execl(const char *path,const char *arg_i,(char *)0);
Execl(“新程序路径”,“新程序名”,参数,(char *)0);
#include<> /* 提供函数的定义*/
Main()
{ printf(“Ready to e