1、Linux 环境编程,新疆大学信息科学与工程学院,主要内容,系统调用和库函数 文件操作 进程管理和同步 进程通信 内存管理,系统调用和库函数,操作系统通过系统调用和库函数向外提供服务。系统调用系统调用是操作系统提供的、与用户程序之间的接口,也就是操作系统提供给程序员的接口。它一般位于操作系统核心的最高层。不同操作系统所提供的系统调用的数量和类型是不一样,但是基本概念类似。 库函数函数库包含了系统提供的大量程序。他们解决带共性的问题,并为程序的开发和执行提供方便的环境。库函数可以分为下面六大类: 1)文件管理 2)状态信息 3)文件修改 4)程序设计语言的支持 5)程序装入和执行 6)通信。,系
2、统调用和库函数,调用方式在Linux系统中,系统调用和库函数都是以C函数的形式提供给用户。 比如,要使用一个Open系统调用来打开指定的文件,则表明相应的文件包。所用到的头文件一般放在/usr/include/sys或者/usr/include/linux目录中。#include #include #include .int Open(const char * path,int oflags);/声明部分/实际调用int fd;fd=open(“/home/mengqc/myfile1”,O_RDWR);,文件操作,文件操作,打开文件时使用的一些标志: O_CRATE 文件不存在,则创建它 O
3、_RDONLY 以只读方式打开文件 O_WRONLY 以只写方式打开文件 O_TRUNC 如果文件存在,则将文件的长度截为0,进程控制,有关进程控制的系统调用有: Fork:创建一个进程,没有参数。 Exec:这个系列函数主要作用是在调用进程内部执行一个可执行文件。 Wait:等待进程执行完毕。 Exit:终止调用的程序。 Getpid:获取进程编号PID。 Sleep:挂起进程某一段时间。 Nice:改变进程的优先级。,进程通信,Linux下进程间通信主要使用一下手段:管道级有名管道,信号,消息,共享内存,信号量和套接口。 管道:mkfifo函数来创建FIFO文件(有名管道) 信号:kill
4、(发送信号),raise(给进程本身发送信号),alarm(指定时间后发送信号)。 消息队列:msgget(创建或打开一个消息队列),msgsnd(发送一个消息),msgrcv(从消息队列读取一个消息)。 信号量:semget(创建或访问已存在的信号量),semop(在信号量上进行操作),semctl(控制和删除信号量)。 共享内存:shmget(创建或获取共享内存区域),shmat(共享内存附加的调用进程地址空间),shmdt(从调用进程地址空间分离共享内存区域)。,内存管理,Linux中使用的内存管理函数有: malloc:分配没有被初始化的内存内存块。 calloc:分配被初始化的内存内存块。 realloc:调整先前分配的内存块大小。 free:释放内存块。,