小编Pra*_*van的帖子

睡眠毫秒

我知道POSIX sleep(x)函数使程序休眠x秒.是否有一个函数使程序在C++中休眠x 毫秒

c++ linux sleep

577
推荐指数
12
解决办法
121万
查看次数

将stdout/stderr重定向到字符串

以前有很多关于将stdout/stderr重定向到文件的问题.有没有办法将stdout/stderr重定向到字符串?

c c++ stdout stderr

52
推荐指数
5
解决办法
6万
查看次数

如何在stl列表中搜索元素?

find()列表中是否有向量中的函数?

有没有办法在列表中这样做?

c++ stl

41
推荐指数
3
解决办法
16万
查看次数

为矢量分配内存

有人能给我一个如何为矢量分配内存的例子吗?我需要几条线.我有一个接收20-30个元素的向量..但当我尝试cout它并编译它我只得到前几个条目..

c++ vector

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

STL地图在地图C++中

在c ++ STL map中,我有一个类似的定义

map<string, map<int, string> > info;
Run Code Online (Sandbox Code Playgroud)

我使用以下代码迭代它.

for( map<string, map<int, string> >::iterator ii=info.begin(); ii!=info.end(); ++ii){
    for(map<int, string>::iterator j=ii->second.begin(); j!=ii->second.end();++j){
        cout << (*ii).first << " : " << (*j).first << " : "<< (*j).second << endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

我怀疑这是迭代的正确方法还是有更好的方法呢?上面的代码适合我.但我正在寻找更优雅的解决方案.

c++ iteration dictionary stl

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

设置boost创建的共享内存的权限

我们打开一个由另一个进程创建的boost共享内存

  boost::interprocess::managed_shared_memory segment(boost::interprocess::open_only, "SharedMem");
Run Code Online (Sandbox Code Playgroud)

但是,如果创建共享内存的进程是root用户,则读取它的进程(如果是普通用户)将失败,原因如下:

terminate called after throwing an instance of 'boost::interprocess::interprocess_exception'
what():  Permission denied
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能避免这种情况?那是为所有人提供共享内存的权限?

c++ permissions boost-interprocess

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

卷曲WRITEFUNCTION和类

class Filter{
private:
    string contents;
    bool Server(void);
public:
    void handle(void *, size_t, size_t, void *);
   };
Run Code Online (Sandbox Code Playgroud)

我有这样的类标题.我想在函数Server中调用curl WRITEFUNCTION,它将使用句柄写入字符串内容.虽然它一直给我错误

error: invalid use of member (did you forget the ‘&’ ?)
Run Code Online (Sandbox Code Playgroud)

错误指向的行是CURLOPT_WRITEFUNCTION ....我的curl请求看起来像这样......

curl_easy_setopt(curl,CURLOPT_URL, address.c_str());
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,handle);
curl_easy_perform(curl);
Run Code Online (Sandbox Code Playgroud)

这意味着它无法访问句柄()..我怎么能纠正这个?

c++ curl

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

如何在Linux中找到forked进程与copy-on-write共享多少内存?

如果有一个进程读取一个大文件并将其保存在其内存中(或只是一个malloced char*),并且该主进程是分叉的,如果子进程只从该内存(或char*)读取,则根据写时复制,不复制保存指针的内存,父和子共享相同的内存,直到其中任何一个尝试写入该内存,在这种情况下,进程会复制内存并进行更改那.

所以我的问题是,如果有一个拷贝写入实现,有没有办法知道孩子使用的内存量不与主进程共享?换句话说,子进程实际使用了多少内存,如果它使用来自某些读取调用的父内存?

top或ps命令只会给出孩子应该拥有的内存总量.(即假设孩子复制内存或指针中的数据.)

有没有办法获得CoW语义实际使用的数据量?

/proc/[pid]/smaps 按照aix和Mat的建议经历过,但我发现的是很多空的文件.我试过这个命令来查找哪些文件中包含数据:tail -n 5 */smaps | less 我得到的o/p是

==> 1012/smaps <==

==> 1074/smaps <==

==> 10/smaps <==

==> 1148/smaps <==

==> 11862/smaps <==

==> 11/smaps <==

==> 1355/smaps <==

==> 1356/smaps <==

==> 1357/smaps <==

==> 1358/smaps <==

==> 1361/smaps <==

==> 13/smaps <==

==> 14900/smaps <==

==> 14/smaps <==

==> 1501/smaps <==

==> 15/smaps <==

==> 1684/smaps <==

==> 1685/smaps <==

==> 16/smaps <==

==> 17772/smaps <==

==> 17827/smaps <==

==> 17/smaps …
Run Code Online (Sandbox Code Playgroud)

c c++ linux fork

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

如何在向量中搜索元素?

我有这样的代码....

std::vector<string>::iterator p;
p =  find(v.begin(),v.end(),"asdasda"); 
cout << *p << endl;
Run Code Online (Sandbox Code Playgroud)

如果"asdasda"不是向量的一部分,则p指向一些垃圾,cout给出一个seg错误.什么应该是if声明会使cout执行onlyif"asdasda"被发现?以及"asdasda"在v中的位置...就像我们之前宣称v [3]为"asdasda"一样,那我怎么能从发现中知道v [3]是"asdasda"?

c++ vector find

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

c ++中文件的时间戳

我想检查一个文件,看它是否已被更改,如果是,然后重新加载..为此,我开始使用以下代码,这让我无处可寻......

#include <sys/types.h>
#include <sys/stat.h> 
#include <unistd.h>
#include <iostream>

using namespace std;

int main()
{
    struct stat st;
    int ierr = stat ("readme.txt", &st);
    if (ierr != 0) {
            cout << "error";
    }
    int date = st.st_mtime;
    while(1){
            int newdate = st.st_mtime;
            usleep(500000);
            if (newdate==date){
                    cout << "same file.. no change" << endl;
            }
            else if (newdate!=date){
                    cout << "file changed" << endl;
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

所有的代码都是打印相同的文件..没有连续变化.

c++ timestamp

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

标签 统计

c++ ×10

c ×2

linux ×2

stl ×2

vector ×2

boost-interprocess ×1

curl ×1

dictionary ×1

find ×1

fork ×1

iteration ×1

permissions ×1

sleep ×1

stderr ×1

stdout ×1

timestamp ×1