Solaris和POSIX之间的区别

Met*_*est 2 c linux multithreading solaris

Solaris函数和POSIX的实现类似或不同.实际上,我试图找到一个解决方案来分叉多个线程的进程.POSIX没有任何功能来执行此操作,而Solaris 为此目的使用forkall.你认为它可以很容易地移植到Linux.请注意,我的解决方案不需要是便携式或POSIX兼容的.

osg*_*sgx 5

Solaris有一整套POSIX接口(可能没有一些可选部件),但是Solaris有额外的接口来支持旧的Solaris软件(不是用POSIX写的,而是用Solaris接口编写的).

另外,ML中有一个关于forkall的帖子http://www.mail-archive.com/opensolaris-code@opensolaris.org/msg02256.html

Solaris支持POSIX(在许多其他标准中),但并非所有在Solaris上都能找到的东西都是 严格的 POSIX.

移植这样的内部事物(进程/线程管理深入内核)很难,几乎等于从Scratch编写这个.这也是因为Solaris使用不同的线程模型.

  • forkall和fork是内核调用(系统调用,系统调用).它们在内核中,而不在libc中.Libc将仅包含用于执行系统调用的包装器,并且可能是一些额外的实用程序.这是OpenSolaris内核中的一个forkall:http://fxr.watson.org/fxr/source/common/os/fork.c?v = OPENSOLARIS#L107这是OpenSolaris libc http://src.opensolaris中的包装器.组织/源极/外部参照/ onnv/onnv栅/ usr/src目录/ LIB /的libc /端口/线程/ scalls.c#280 (2认同)