小编Mar*_*rik的帖子

非阻塞连接时的POLLHUP?

我打开一个套接字并尝试连接()到不存在的对等体.connect()是非阻塞的.

然后我在插座上epoll.

有时我得到EPOLLERR | EPOLLHUP事件,随后的getsockopt(SO_ERROR)返回ECONNREFUSED.这是我期望的.

但是,有时我会单独获得EPOLLHUP,后续的getsockopt(SO_ERROR)返回0.

任何人都知道后一种情况应该是什么意思?

sockets epoll nonblocking connect

5
推荐指数
0
解决办法
352
查看次数

匿名共享内存?

是否有一种 POSIX-y 方法来分配不与特定文件名绑定的共享内存?即仅通过 UNIX 域套接字传递 SCM_RIGHTS 消息来在进程之间共享内存?

posix shared-memory

5
推荐指数
0
解决办法
1203
查看次数

Automake:Solaris上未扩展的变量

我在configure.ac中声明了一个变量:

MY_VERSION="0:0:0"
AC_SUBST(MY_VERSION)
AC_MSG_NOTICE([$MY_VERSION])
Run Code Online (Sandbox Code Playgroud)

在./configure阶段期间正确打印变量的值.

在Makefile.am中有以下行:

libmylib_la_LDFLAGS = -version-info @MY_VERSION@
Run Code Online (Sandbox Code Playgroud)

在链接器命令行中,它在除Solaris之外的所有系统上正确扩展为"-version-info 0:0:0".在solaris上(SunOS 5.10 Generic_141414-10 sun4u sparc SUNW,Sun-Blade-100)我得到了"-version-info"没有版本号.

什么可能出错了?

automake autoconf solaris autotools

5
推荐指数
1
解决办法
298
查看次数

ConnectEx在哪里定义?

我想在Windows7上使用ConnectEx功能,使用MSVC2010.

我收到错误C3861:'ConnectEx':找不到标识符

MSDN建议该函数应该在mswsock.h中声明,但是,在检查它时,它没有在那里定义.

有小费吗?

asynchronous connect visual-c++ windows-7

3
推荐指数
1
解决办法
2424
查看次数

尽管符号存在,但 CMake 中的符号查找失败

我正在尝试使用 CMake 检查符号 getaddrinfo_a 是否存在:

list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
check_symbol_exists(getaddrinfo_a netdb.h HAVE_GETADDRINFO_A)
list(REMOVE_ITEM CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
Run Code Online (Sandbox Code Playgroud)

虽然 getaddrinfo_a 在 netdb.h 中定义(假定已定义 _GNU_SOURCE),但 CMake 无法找到它:

-- Looking for getaddrinfo_a
-- Looking for getaddrinfo_a - not found.
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?

lookup symbols cmake

3
推荐指数
1
解决办法
1410
查看次数

如何在CMake中检查需要两个头文件的符号?

要定义符号getifaddrs,您必须包括sys/types.h和ifaddrs.h.检查符号是否存在时,我尝试了以下内容:

set (CMAKE_EXTRA_INCLUDE_FILES sys/types.h)
check_symbol_exists (getifaddrs ifaddrs.h SP_HAVE_IFADDRS)
set (CMAKE_EXTRA_INCLUDE_FILES)
Run Code Online (Sandbox Code Playgroud)

但是,测试程序仍然只包含ifaddrs.h,因此无法检测到符号.

如何强制它包含sys/types.h?

symbols header cmake

3
推荐指数
1
解决办法
796
查看次数

在pthread_cond_wait()取消阻塞之前,pthread_mutex_lock()是否可以解锁?

想象一下线程阻塞条件变量:

pthread_mutex_lock (mutex);
do_something ();
pthread_cond_wait(cond, mutex); // [1]
do_something_else ();
pthread_mutex_unlock (mutex);
Run Code Online (Sandbox Code Playgroud)

互斥锁已解锁,并且尝试锁定互斥锁的其他线程未被阻止:

pthread_mutex_lock (mutex);
do_some_work ();
pthread_cond_signal (cond);
pthread_mutex_unlock (mutex);
Run Code Online (Sandbox Code Playgroud)

同时还有另一个线程在等待获取关键部分的所有权:

pthread_mutex_lock (mutex); // [2]
do_some_random_work ();
pthread_mutex_unlock (mutex);
Run Code Online (Sandbox Code Playgroud)

现在,问题是:当调用pthread_cond_signal()时,是否保证pthread_cond_wait()[1]将在pthread_mutex_lock()[2]之前解除阻塞?

POSIX规范似乎没有说明这个案例.

c multithreading mutex condition-variable

2
推荐指数
1
解决办法
775
查看次数

Windows 上的递归互斥锁?

据我了解,在 Windows 上 CRITICAL_SECTION 只能用作非递归互斥锁。要获得递归互斥锁,您必须使用 OpenMutex 和朋友。

但是,AFAIU、Win32 Mutex 不能与条件变量一起使用(InitializeConditionVariable 等)

有没有办法在 Windows 上将递归互斥体与条件变量结合使用?

windows mutex condition-variable recursive-mutex

1
推荐指数
1
解决办法
2279
查看次数

Vim:特定于文件扩展名的快捷方式?

在Vim中,可以将语法高亮显示附加到文件扩展名.

键盘快捷键是否可以这样做?

即,只有在编辑具有特定扩展名的文件时,快捷方式才会打开.

vim shortcut

0
推荐指数
1
解决办法
436
查看次数