小编Cla*_*diu的帖子

类似于teamviewer的ssh工具?

我想通过SSH从工作中访问我的家用电脑,但问题是我的家用电脑是在NAT路由器后面(我无法访问).因为我的工作计算机安装了CentOS并且位于代理之后,我无法使用TeamViwer(电视在Linux上移植了葡萄酒,显然代理设置不起作用).

有没有人知道一个适合我需要的程序?

谢谢,克劳迪

linux ssh nat

36
推荐指数
3
解决办法
5万
查看次数

"@echo off"和"@echo%off"之间的区别?

在批处理脚本的开头,我看到了命令:

@echo %off
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,它具有以下相同的效果:

@echo off
Run Code Online (Sandbox Code Playgroud)

'%'前缀有什么影响?

batch-file

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

找不到GLIBC_2.7

尝试运行多个可执行文件时,我收到以下错误:

/lib/libc.so.6: version `GLIBC_2.7' not found (required by .tools/bridge/bridge)
Run Code Online (Sandbox Code Playgroud)

我最近从CentOS 5.3升级到5.7(我需要在CentOS 5上运行这些工具,所以我不能升级到6).我重新编译了整个代码,但仍然出现此错误.

有没有人遇到过这种类型的错误?

谢谢,克劳迪

glibc centos libc

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

如何正确抛出一个不仅需要构造函数的异常?

我有一个Exception类,我想在它抛出之前设置更多信息.我可以创建Exception对象,调用它的一些函数然后抛出它而不用它的任何副本吗?

我发现的唯一方法是抛出一个指向对象的指针:

class Exception : public std::runtime_error
{
public:
    Exception(const std::string& msg) : std::runtime_error(msg) {}
    void set_line(int line) {line_ = line;}
    int get_line() const {return line_;}
private:
    int line_ = 0;
};

std::unique_ptr<Exception> e(new Exception("message"));
e->set_line(__LINE__);
throw e;
...
catch (std::unique_ptr<Exception>& e) {...}
Run Code Online (Sandbox Code Playgroud)

但通常避免通过指针抛出异常,那么还有其他方法吗?

还可以选择通过构造函数设置所有选项,但如果将更多字段添加到类中并且您希望对要设置的字段进行细粒度控制,则可以快速变为不可扩展:

throw Exception("message"); // or:
throw Exception("message", __LINE__); // or:
throw Exception("message", __FILE__); // or:
throw Exception("message", __LINE__, __FILE__); // etc.
Run Code Online (Sandbox Code Playgroud)

c++ exception throw

10
推荐指数
3
解决办法
839
查看次数

如何更改linux套接字文件的权限?

我有一个程序,它创建一个套接字,然后我想更改套接字文件的权限:

ret_val = chmod(filename, 0777);
Run Code Online (Sandbox Code Playgroud)

,但它不会改变,即使ret_val为0.如果我在常规文件上尝试相同的操作,它也可以.

有任何想法吗?

PS:我以root身份运行程序,因此它拥有所需的所有权限.

c sockets permissions

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

类实现接口应该只能添加同一个类的对象

假设我在Java中有一个接口:

interface I {
    void add(I foo);
}
Run Code Online (Sandbox Code Playgroud)

,以及实现此接口的两个C和D类.

有什么办法可以修改界面,这样我才能这样做:

C c = new C();
c.add(new C());
Run Code Online (Sandbox Code Playgroud)

, 但不是

c.add(new D());
Run Code Online (Sandbox Code Playgroud)

我在考试中有这个问题,但我唯一的想法是在方法的定义中使用instanceof运算符:

class C implements I {
    public void add(I foo) {
        if (foo instanceof C) {
            System.out.println("instance of C");
        } else {
            System.out.println("another instance");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何修改界面使我产生相同的效果.

谢谢

java generics

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

为什么共享库中的类的构造函数导出两次?

假设我有一个非常基础的课程:

// lib.h
class A
{
public:
    A();
    void nop();
};

// lib.cpp
#include "lib.h"

A::A() {}
void A::nop() {}
Run Code Online (Sandbox Code Playgroud)

,我将其编译为共享库:

g++ lib.cpp -shared -o lib.so -fPIC
Run Code Online (Sandbox Code Playgroud)

当我从库的代码部分查看导出的符号时,我看到其中的三个:

$ nm lib.so | grep ' T '
00000000000010f6 T _ZN1A3nopEv
00000000000010ea T _ZN1AC1Ev
00000000000010ea T _ZN1AC2Ev
$ nm lib.so | grep ' T ' | cut -d ' ' -f3 | xargs c++filt
A::nop()
A::A()
A::A()
Run Code Online (Sandbox Code Playgroud)

为什么构造函数导出两次?我已经在Linux上使用gcc和clang进行了测试,结果是相同的。

PS:我并不是要解决一个真正的问题,这只是我注意到的一个特点。

c++ linker

6
推荐指数
0
解决办法
63
查看次数

标签 统计

c++ ×2

batch-file ×1

c ×1

centos ×1

exception ×1

generics ×1

glibc ×1

java ×1

libc ×1

linker ×1

linux ×1

nat ×1

permissions ×1

sockets ×1

ssh ×1

throw ×1