2017-06-01 15:42:45 u013491946 阅读数 4750

            当你有些事情在应用层之上解决不了的事(虽然这样的情况甚少,但是也有,也可以说经常有,比如内核的移植,裁剪等等),针对内核开发则需要熟悉各个子系统标准的API接口

     链接:http://www.compsoc.man.ac.uk/~moz/kernelnewbies/documents/kdoc/kernel-api/linuxkernelapi.html








2013-09-15 18:05:41 a1222234 阅读数 1687
自己的思考:其实其他语言实现的功能,只要是在windows上进行开发的,他们最终都需要直接或间接的调用windows api才能实现软件的功能,因为在windows上运行的所有软件,无论是什么语言编写的,最终都是由windows API提供的功能实现的。(即使是windows上的c语言函数也是调用windows的api实现的。)
类似的,在linux上运行的所有软件,无论是什么语言编写的,最终都是调用的linux提供的API来实现功能的。


疑问:话又说回来,那windows API又是什么语言实现的呢?linux API呢?
那位大侠知道?请不吝赐教,共同进步!


-------------------------
网上的回答:
JAVA API是由JAVA虚拟机进行编译,虚拟机会将你的这些JAVA API转换为WINDOWS API 或对应的二进制代码(如果在其它操作系统平台上,则转为其它平台API)。


Windows API 是由windows  操作系统提供的,是用来与操作系统进行对话的。
参考:http://zhidao.baidu.com/link?url=Z1DCkkmKEj7iw6xfuDerh7-t7lP3-WderTM9LNtTR7ATi9g7YUyX23jB75ol68BQAWQdOp7Nq_kZeYgw0eLuRa
2017-05-24 20:35:15 lyk314949530 阅读数 0

系统调用:操作系统提供给用户程序调用的一组“特殊接口,可以通过这组接口获得操作系统内核提供的服务。例如:创建进程、实现进程调度、进程管理,进程间通信,文件系统控制,系统控制,存储管理,网络管理,socket控制,用户管理等。


用户程序接口(API):通过软中断机制向内核提交请求以获取内核服务的接口。API遵循POSIX标准。


文件I/O操作

(1)open和close

open函数用于打开或者创建文件,并可以指定文件的属性及用户的权限参数。

  close函数用于关闭一个打开的文件,当一个进程终止时,它打开的所有文件都由内核自动关闭。   


open函数语法格式

头文件

#include<sys/types.h>			//提供类型pid_t的定义
#include<sys/stat.h>
#include<fcntl.h>
函数原型

int open(const char *pathname,   //被打开的文件(包含路径)
	const char flags, 	//文件打开的方式
	int perms)		//被打开文件的存取权限,8进制表示法
成功:返回文件描述符

失败:-1


多个flag可以用 | 进行组合。


close函数语法格式

头文件

#include<unistd.h>
函数原型
int close(int fd);   //fd 为文件描述符
成功:返回0

失败:返回-1

(2)read 、write 、lsweek

read函数用于从指定文件描述符中读出数据。当从终端设备文件中读出数据时,通常一次最多读一行。

write函数用于向打开的文件写数据,写操作从文件的当前位移量处开始,若磁盘已满或超出该文件的长度,则write函数返回失败。

lseek函数用于在指定文件描述符中将文件指针定位到相应的位置。

头文件

#include<unistd.h>
函数原型

ssize_t  read/write  (int fd,		//文件描述符
			void *buff,	//指定存储器读出、写入数据的缓冲区
			size_t count)	//指定读出、写入的字节数
成功:督导或写入的字节数
已到达文件尾:0(读文件是存在此情况,这是返回的字节数会小于希望读出的字节数)
出错:-1








2018-07-08 12:29:27 qq_33575901 阅读数 1889

一、标准IO函数:

打开普通文件:fopen                                                        错误输出函数:perror          stdreror     

按字符输入输出函数:fgetc   fputc                                     按行输入输出函数:fgets          fputs         

按指定单位读写文件:fwrite     fseek                                  定位流:fseek                                                  关闭流:fclose

格式化输入输出函数:fprintf    fscanf                                  sprintf       sscanf            

判断fgetc的返回结果函数:feof  

二、文件IO函数:

头文件:sys/types.h  sys/stat.h    fcntl.h       unistd.h

打开文件:open                                                                 读写文件:read            write

打开目录:opendir                                                             读写目录:readir

定位文件:lseek                                                                 获取文件信息:stat

三、进程编程函数

头文件:sys/types.h   unistd.h       stdlib.h

创建进程:fork                                                                   在一个进程中执行另一个程序:execl

退出进程:exit                  _exit                                           子进程不退出,阻塞父进程:wait            waitpid

四、线程编程函数

头文件:pthread.h     semaphore.h          

创建线程:pthread_create                                                   退出线程:pthread_exit

若没线程结束则阻塞:pthread_join(线程ID,NULL)

线程同步:int sem_init初始化信号量        int sem_wait:获取信号量,不成功则阻塞(P操作)  int sem_post:释放信号量  (V操作)

线程互斥:pthread_mutex_init:创建互斥锁           pthread_mutex_lock:加锁            pthread_mutex_unlock:解锁

五、管道通信

头文件:sys/types.h     sys/state.h       unistd.h

管道函数名:pipe                                                            有名管道函数:mkfifo

六、信号函数:

头文件:sys/types.h   signal.h           unistd.h    

处理信号函数:signal                      发送信号函数:kill                    设置定时器:alarm

七、建立共享内存函数

头文件:sys/types.h   sys/ipc.h      sys/shm.h

指定建立ipc通讯所需的ID:ftok                         创建共享内存:shmget                   映射共享内存:shmat

删除映射地址:shmdt                                         释放结构体变量:shmctl

八、消息队列

头文件:sys/types.h      sys/ipc.h        sys/shm.h

创建消息队列:msgget                                                                  发送消息:msgnd                    

接收消息:msgrcv                                                                         控制消息:msgctl

Linux API查询

阅读数 1389