小编Rob*_*bin的帖子

sem_open()错误:linux上的"对sem_open()的未定义引用"(Ubuntu 10.10)

所以我收到错误:"对sem_open()的未定义引用",即使我已经包含了semaphore.h头文件.我的所有pthread函数调用(mutex,pthread_create等)都发生了同样的事情.有什么想法吗?我使用以下命令编译:

g ++'/ home/rbin /Desktop/main.cpp'-o'/ home/robin /Desktop/main.out'

#include <iostream>
using namespace std;
#include <pthread.h>
#include <semaphore.h>
#include <fcntl.h>

const char *serverControl = "/serverControl";
sem_t* semID;

int main ( int argc, char *argv[] )
{
    //create semaphore used to control servers
    semID = sem_open(serverControl,O_CREAT,O_RDWR,0);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ linux semaphore

13
推荐指数
2
解决办法
2万
查看次数

如果使用<<,Ruby attr_reader允许修改字符串变量

进入一些奇怪的行为,并想知道是否有其他人可以确认我所看到的.

假设您使用成员变量创建一个类,并允许使用attr_reader读取它.

class TestClass
  attr_reader :val

  def initialize(value)
   @val = value
  end
end
Run Code Online (Sandbox Code Playgroud)

现在当我执行以下操作时,它似乎修改了@val的值,即使我只授予它读取权限.

test = TestClass.new('hello')
puts test.val
test.val << ' world'
puts test.val
Run Code Online (Sandbox Code Playgroud)

这回来了

hello
hello world
Run Code Online (Sandbox Code Playgroud)

这只是我在irb中进行的一些测试的结果,所以不确定是否总是如此

ruby instance-variables

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

将rpm从一个OS复制到另一个OS

我在两个不同的vm上运行sles10sp3.我试图找到与其中一个vm相同的rpm,以便我可以在另一个vm上安装相同的rpm.有没有办法简单地将它们从一个vm复制到另一个vm(或者通常复制所有.rpm的关闭SLES)?这开始于我试图找到一个1.8.4转的红宝石并且没有任何运气,但是我还需要找到一堆其他转速.

linux rpm

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

RUBYLIB环境路径

所以目前我在.bashrc文件中包含了以下内容.

export RUBYLIB=/home/git/project/app/helpers
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用具有的规范来运行rspec

require 'output_helper'
Run Code Online (Sandbox Code Playgroud)

该文件位于helpers目录中.我的问题是,当我将导出行更改为:

export RUBYLIB=/home/git/project/
Run Code Online (Sandbox Code Playgroud)

它不再找到帮助文件.我认为ruby应该搜索我提供的整个路径,而不仅仅是提供的最外层目录?这是考虑它的正确方法吗?如果没有,我怎么能这样做RUBY将搜索所有子目录及其子目录等?

谢谢,

知更鸟

ruby rspec environment-variables ubuntu-10.10

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

在名称中使用*执行ls命令

我想对名为/ var/local/tmp/foo*的文件执行ls命令.我一直在尝试使用

%x[ls "#{path]"]
Run Code Online (Sandbox Code Playgroud)

但是这会返回:

ls: /var/local/tmp/foo*: No such file or directory
Run Code Online (Sandbox Code Playgroud)

请注意,%x [ls'/ var/local/tmp/foo*']也会返回错误.

如果我执行相同的命令,但如下所示:

%x[ls /var/local/tmp/foo*]
Run Code Online (Sandbox Code Playgroud)

它工作正常.

我猜测将目录路径放入字符串会导致ls将其视为名为"/ var/local/tmp/foo*"的文件.

任何想法如何解决这个问题?我想使用一个包含此字符串的变量,因此直接放入/ var/local/tmp/foo*不是一个选项.

ruby ls

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

asyncsocket"connectToHost"总是成功,永远不会返回失败

我正在使用asyncsocket创建一个与目标C的套接字连接.我使用"connectToHost"方法执行此操作.我试图处理套接字连接失败的情况.当连接成功时,"connectToHost"应该返回"YES",否则返回NO.出于某种原因,它总是返回是.我甚至提供了一个空字符串作为主机,它仍然返回yes.有什么想法吗?

谢谢,

知更鸟

BOOL connectStatus = NO; //used to check if connection attempt succeeded
testSocket = [[AsyncSocket alloc] initWithDelegate: self];
connectStatus = [testSocket connectToHost: @"" onPort: 5000 error: nil];

if(connectStatus == NO)
{
    NSLog(@"Failed to connect to socket ");

}

else {
    NSLog(@"Connected to socket sucessfully, connectStatus = %d", connectStatus);
}
Run Code Online (Sandbox Code Playgroud)

sockets objective-c asyncsocket

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

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

通过覆盖向方法添加功能,但仍调用原始方法

可能重复:
当猴子修补方法时,你可以从新实现调用重写方法吗?

所以我希望通过覆盖它来简单地向方法添加一些条件检查,但是我希望调用原始方法.如何在红宝石中做到这一点?

即.

方法存在

def fakeMethod(cmd)
  puts "#{cmd}"
end
Run Code Online (Sandbox Code Playgroud)

我想补充一下

if (cmd) == "bla"
  puts "caught cmd"
else
  fakeMethod(cmd)
end
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

ruby

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