小编Kir*_*rov的帖子

如何在C/C++应用程序中使用lsof(List Opened Files)?

有没有办法使用获取所有打开的套接字?我知道lsof命令,这就是我正在寻找的,但如何在应用程序中使用它?

我们的想法是通过port数字和数字获得一个打开的套接字的FD pid.

c c++ unix sockets lsof

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

gcc在简单代码上编译错误

我需要一个简单c结构的帮助,但无法找到它为什么不编译使用gcc(opensuse 11.4)

我有这个代码:

struct Image {
 int w;
 int h;
 // other code
};
Run Code Online (Sandbox Code Playgroud)

在同一个文件中,我有另一个结构数组,如下所示:

struct ShapeImage
{
  Image image[10];
  // other code
};
Run Code Online (Sandbox Code Playgroud)

当我编译时,我得到:

syntax error before [' token`
Run Code Online (Sandbox Code Playgroud)

为什么我收到此错误如果指定图像中的数字10 image[10];看起来对我好,有什么问题?

c gcc compilation

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

从已经关闭的套接字接收数据?

假设我有一个服务器应用程序 - 使用UNIX套接字通过TCP连接.

连接是异步的 - 换句话说,客户端和服务器的套接字是非阻塞的.

假设以下情况:在某些情况下,服务器可能决定将某些数据发送到连接的客户端并立即关闭连接:使用shutdownwith SHUT_RDWR.

所以,我的问题是 - 是否有保证,当客户端调用时recv,它会收到(由服务器发送)数据?

或者,要接收数据,recv必须在服务器之前调用shutdown?如果是这样,我应该做什么(或者,更确切地说,我该怎么做),以确保客户收到数据?

c c++ unix sockets client-server

6
推荐指数
2
解决办法
2675
查看次数

有没有办法强制用户显式指定模板参数类型?

简短版本:我有一个模板函数,它是"通用的",但是我想强制用户显式指定参数的类型,它们作为参数传递给这个函数.

有任何想法吗?


长版:听起来像一个糟糕的设计,但这是我的情况,我现在想不出更好的东西.

我试图::setsockopt在一个小类中"实现" socket(我不想拥有大量的函数,采用不同的参数并做同样的事情).例如:

template< typename OPTION_VALUE_TYPE >
bool set_option( int level, int option_name, const OPTION_VALUE_TYPE& value )
{
    return -1 != ::setsockopt( fd_, level, option_name, &value, sizeof( value ) );
}
Run Code Online (Sandbox Code Playgroud)

但是,这可能会导致以下情况-调用set_option1,试图设置unsigned char选项将导致失败,因为1int.正确的用法是:

set_option< unsigned char >( level, option, 1 );
Run Code Online (Sandbox Code Playgroud)

set_option( level, option, 1 );
Run Code Online (Sandbox Code Playgroud)

将完全编译,但将是非常错误的.

c++ templates

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

不擦除std :: list :: iterator会使迭代器失效并破坏对象吗?

为什么以下打印2

list<int> l;
l.push_back( 1 );
l.push_back( 2 );
l.push_back( 3 );
list<int>::iterator i = l.begin();
i++;
l.erase( i );
cout << *i;
Run Code Online (Sandbox Code Playgroud)

我知道什么erase回归,但我想知道为什么这样可以?或者它是未定义的,还是依赖于编译器?

c++ stl list erase

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

便携式独立C#编译器

我正在构建一个我需要在移动中工作的应用程序,我可以访问许多PC,我没有管理员权限来安装软件.

我使用C#所以我希望有一个C#的可移植版本或任何其他等待在任何其他PC上编译我的应用程序...

此外,如果有一个C++编译器,它会很棒.

c# c++ portable-applications

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

perror 和 std::cerr 使用

谁能告诉我std::cerr和之间的用法区别是什么perror

void perror ( const char * str );
Run Code Online (Sandbox Code Playgroud)

我想知道在 C++ 应用程序中哪一个更可取,为什么它更可取。

c++

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

为什么在C中内置类型的初始化和赋值之间没有区别?

我正在读一本书,它说有初始化和赋值为内置型没有区别CC++,但喜欢的类型stringC++,也有区别.为什么?为什么内置类型没有区别C

c c++ initialization

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

ofstream线程是否安全?

我正在开发一个程序,它使用多个std::ifstreams来读取二进制文件,std::ifstream每个线程一个.现在我需要知道,如果std::ofstream在Windows和Linux上是线程安全的,那么在同一个文件中写入.我只使用一个std::ofstream并使用多个线程.
我读通过利用每个线程和写作使用的输出文件的块不同的块seekp()write().目前它对我有用,但它是否对大文件有问题.

std::ofstream线程安全的?

c++ multithreading

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

Visual Studio(或任何其他工具)可以将地址解释为调用堆栈的开头(增强上下文)吗?

是否可以告诉 Visual Studio(或任何其他工具,甚至在任何其他主要操作系统上)将地址解释为调用堆栈的开头?


我想要实现的目标:我们有一个库,它使用boost's make_fcontext/jump_fcontext并将这些上下文存储到容器中,以便暂停一些调用以供以后处理。

我的问题是 - 是否可以以某种方式调试这些挂起的调用是什么?我想,我可以告诉调试器/工具:“这是这个地址,虽然它不明显,但它实际上指向一个调用堆栈,‘解析’它并像标准调用堆栈一样向我显示它”。

不知道理论上是否可行,因为我不知道boost::context细节,但听起来是可以实现的。

有人尝试过解决这个问题吗?

c++ debugging boost context-switch

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