如何在Interix平台上编译 /使用信号?我无法将其编译,因为Interix似乎与非POSIX兼容,至少在其实现中是这样.signal.h
如果有人找到了一种方法来解决这个问题,并允许代码在Interix上编译信号,请告诉我如何!
谢谢.
C,C++中的传统软件,基于Linux和Interix构建(适用于Win XP).
在编译期间,仅在Interix上出现以下错误; 在添加pthread和signal代码之后,不在Linux上.pthreads由于与Xmotif冲突(编译但在运行时崩溃),因此无法在没有信号的情况下使用.
结构差异引起的错误:
`struct siginfo' has no member named `si_value'
aggregate `sigval val' has incomplete type and cannot be defined
`struct sigaction' has no member named `sa_sigaction'
Run Code Online (Sandbox Code Playgroud)
未申报的错误:
`sigqueue' undeclared
`SA_NODEFER' undeclared
`SA_SIGINFO' undeclared
Run Code Online (Sandbox Code Playgroud)
http://www.mail-archive.com/bug-gnulib@gnu.org/msg10425.html
http://www.gnu.org/software/hello/manual/gnulib/signal_002eh.html
HTTP:// EN. wikipedia.org/wiki/Interix
http://www.opengroup.org/susv3xbd/signal.h.html
我正在grep为Windows 7 x64 SUA/Interix编译64位GCC编译器.
它在标记线上窒息stddef.h:
#ifndef _SIZE_T_DEFINED
#if defined (lp64) || defined(_WIN64)
#ifdef lp64
typedef unsigned long size_t; // <------ error
#else /* lp64 */
typedef unsigned __int64 size_t;
#endif /* lp64 */
#else /* (defined(lp64) || defined(_WIN64)) */
typedef unsigned int size_t;
#endif /* (defined(lp64) || defined(_WIN64)) */
#define _SIZE_T_DEFINED
#define _SIZE_T
#endif /* _SIZE_T_DEFINED */
Run Code Online (Sandbox Code Playgroud)
输出make是:
make all-recursive
Making all in intl
gcc -c -DLOCALEDIR=\"/usr/local/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/local/share/locale\" -DLIBDIR=\"/usr/local/lib\" -DIN_LIBINTL -DHAVE_CONFIG_H -I.. -I. -I../../intl …Run Code Online (Sandbox Code Playgroud) 在Unix for Windows Porting Dictionary for HPC page for fork()中写了
Unix fork()或vfork()没有等效的Windows API.基于Unix的应用程序的Microsoft子系统(SUA或Interix)是一个正确实现fork()和vfork()的Unix环境.
在页面上还有一些示例源代码,它使用...标准的Win32 API CreateProcess函数.
我糊涂了.
该示例是否应该使用fork()来说明由SUA/Interix实现的fork()语句?
如果fork()真正实现了它所居住的头文件和lib文件?