这么简单的sem_int竟然失败

wupangzi 2007-06-06 08:26:05
/*testSemp文件内容如下*/
#include <semaphore.h>

static sem_t semVal;
int main()
{
int nVal;
sem_init(&semVal,0,nVal);
return 1;
}

g++ -o testSemp testSemp.cpp //没有问题
./testSemp //竟然报Bad system call(core dumped)

我是在freebsd上跑的,哪位大哥碰到过?
...全文
203 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
heishiJJ 2012-05-03
  • 打赏
  • 举报
回复
可能原因:1\你的系统不支持semaphore,你可以测试一下#include<unistd.h>,然后看看是否定义了宏_POSIX_SEMAPHORES,
2\你编译参数有问题,应该包含-lpthread
dai_weitao 2007-06-07
  • 打赏
  • 举报
回复
问题不清楚, 我手头没UNIX, 没法给你试试.
xfzhao_cn 2007-06-07
  • 打赏
  • 举报
回复
是否是nVal 没有初始化阿, 你试试 int nVal=0; 看看
wupangzi 2007-06-07
  • 打赏
  • 举报
回复
其它几个问题不会,要么是[ENOSYS]这么个问题,请问该如何坚决
dalier149 2007-06-07
  • 打赏
  • 举报
回复
ERRORS
The sem_init() function will fail if:
[EINVAL]
The value argument exceeds SEM_VALUE_MAX.
[ENOSPC]
A resource required to initialise the semaphore has been exhausted, or the limit on semaphores (SEM_NSEMS_MAX) has been reached.
[ENOSYS]
The function sem_init() is not supported by this implementation.
[EPERM]
The process lacks the appropriate privileges to initialise the semaphore.
wupangzi 2007-06-07
  • 打赏
  • 举报
回复
我已经找到问题了。g++ -pthread才可以的。谢谢大家关注!
wupangzi 2007-06-07
  • 打赏
  • 举报
回复
是否是nVal 没有初始化阿, 你试试 int nVal=0; 看看

这个不会,我设置为0也不行。大家再帮忙出出主意啊!

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧