1. POSIX解决什么问题?

 

一般来说,应用程序是通过应用程序编程接口(API)进行编程的,而不是直接通过系统调用进行编程(即不需要使用内核提供的系统调用进行编程)。 API 定义了应用程序使用的一组编程接口。 它们可以通过调用一个系统来实现,也可以通过调用多个系统来实现,而且根本不使用任何系统调用是没有问题的。 事实上,API可以在各种操作系统上实现,为应用程序提供完全相同的接口,但它们在这些系统上的实现可能有很大不同。 如下图所示,当应用程序调用printf()函数时,printf函数会调用C库中的printf,然后调用C库中的write,C库最终调用内核的write()。

posix_posix线程库_posix标准/

从程序员的角度来看,系统调用并不重要,他们只需要处理API。 相反,内核只处理系统调用。 库函数和应用程序如何进行系统调用不是内核关心的。

为了完成同一个功能,不同内核提供的系统调用(一个函数)是不同的。 例如创建进程,Linux下是fork函数,Windows下是creatprocess函数。 好了,现在我正在Linux下写一个程序,使用fork功能。 那么我该如何将这个程序移植到Windows上呢? 我需要将源代码中的所有fork更改为createprocess,然后重新编译…

主流的操作系统有两种,一种是Windows系统,一种是Linux系统。 由于操作系统不同,API分为Windows API和Linux API。 在Windows平台上开发的软件不能在Linux上运行,在Linux上开发的软件也不能在Windows上运行。 这使得软件移植变得困难,POSIX(Protabl Operating System 可移植操作系统规范)应运而生。

posix 标准的出现就是为了解决这个问题。 Linux 和 Windows 都必须实现基本的 POSIX 标准。 Linux将fork函数封装成posix_fork(就这么说),Windows也将creatprocess函数封装成posix_fork,两者都在unistd.h中声明。 这样,程序员在编写普通应用程序时,只需要包含unistd.h并调用posix_fork函数,程序就可以在源代码级别实现可移植。

2.什么是posix?

UNIX的可移植操作系统接口,POSIX标准定义了操作系统应该为应用程序提供的接口标准。 它是IEEE为软件在各种UNIX操作系统上运行而定义的一系列API标准的总称。 。

作者 admin