这2个linux错误有errno.h什么区别?23和24
我尝试了2个不同的网站,但无法理解两者之间的区别.
[EMFILE]
Too many open files.
[ENFILE]
Too many files open in system.
Run Code Online (Sandbox Code Playgroud)
# define ENFILE 23 /* File table overflow */
# define EMFILE 24 /* Too many open files */
Run Code Online (Sandbox Code Playgroud)
此外,我得到错误24和套接字呼叫在第974次失败.(AF_INETUDP数据报套接字)
当我做了一个cat /proc/sys/fs/file-max我看到值334076 ulimit -n显示1024
知道可以做些什么来增加限制吗?
我有一行代码可以同时执行赋值和条件。我可以将它分成两行,但我只是对抛出的错误消息感到好奇。
if ( parameters->__size = m_Elements.size() )
Run Code Online (Sandbox Code Playgroud)
得到这个错误:建议在赋值周围使用括号作为真值 [-Werror=parentheses]
我试过:
if ( (parameters->__size) = (m_Elements.size()) )
Run Code Online (Sandbox Code Playgroud)
错误不会消失。但我觉得我已经完成了我被提示做的事情,并在作业周围添加了括号。为什么错误没有消失?我错过了什么?
由于没有找到在 C++ 中重置累加器的“升压”方法,我遇到了一段似乎重置升压累加器的代码。但不明白它是如何实现的。代码如下 -
#include <iostream>
#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics/stats.hpp>
#include <boost/accumulators/statistics/mean.hpp>
using namespace boost::accumulators;
template< typename DEFAULT_INITIALIZABLE >
inline void clear( DEFAULT_INITIALIZABLE& object )
{
object.DEFAULT_INITIALIZABLE::~DEFAULT_INITIALIZABLE() ;
::new ( boost::addressof(object) ) DEFAULT_INITIALIZABLE() ;
}
int main()
{
// Define an accumulator set for calculating the mean
accumulator_set<double, stats<tag::mean> > acc;
float tmp = 1.2;
// push in some data ...
acc(tmp);
acc(2.3);
acc(3.4);
acc(4.5);
// Display the results ...
std::cout << "Mean: " << mean(acc) << std::endl;
// clear …Run Code Online (Sandbox Code Playgroud) colorama 是一个通用的包,可以独立于平台工作。但它似乎不支持闪烁文本。任何其他方式可以在 python 中实现?
我面临的情况是我需要通过cppcheck但有时会变得棘手.在这种情况下你通常做什么?例如.
#include<iostream>
using namespace std;
void fun1();
int fun2();
int main()
{
fun1();
}
void fun1()
{
int retVal;
if (-1 == (retVal = fun2()))
{
cout <<"Failure. fun2 returned a -1"<< endl;
}
}
int fun2()
{
return -1;
}
Run Code Online (Sandbox Code Playgroud)
我们通常会看到如上所述的代码.cppcheck上面的文件会给出如下输出 -
cppcheck --suppress = redundantAssignment --enable ='警告,样式,性能,可移植性' - inline-suppr --language ='c ++'retval_neverused.cpp检查retval_neverused.cpp ... [retval_neverused.cpp:13] :( style)变量'retVal'被赋予一个从未使用过的值.
我不想仅仅为了cppcheck添加一些虚拟行打印retVal.事实上,它可能是我抛出异常的情况,我不希望异常在其中具有一些微不足道的值作为retVal的值.
我看到一段代码中使用了 0 值。我们使用值 1 表示二进制信号量,使用值 N 表示计数信号量。不知何故,0 的值对我来说没有意义。
/* Initialise the semaphore to be blocked. */
sem_t sem;
sem_init(&sem, 0, 0);
Run Code Online (Sandbox Code Playgroud)
代码是用C语言编程的。然后像往常一样,我们在代码中的其他地方有 sem_wait、sem_post 和 sem_destroy。
如果使用 0 或 1 都可以,那么为什么这个程序不运行 -
#include <stdio.h>
#include <pthread.h>
#include <semaphore.h>
#include <unistd.h>
sem_t mutex;
void* thread(void* arg)
{
//wait
sem_wait(&mutex);
printf("\nEntered..\n");
//critical section
sleep(4);
//signal
printf("\nJust Exiting...\n");
sem_post(&mutex);
}
int main()
{
sem_init(&mutex, 0, 0);
pthread_t t1,t2;
pthread_create(&t1,NULL,thread,NULL);
sleep(2);
pthread_create(&t2,NULL,thread,NULL);
pthread_join(t1,NULL);
pthread_join(t2,NULL);
sem_destroy(&mutex);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果使用 sem_init(&mutex, 0, 1); 完成 sem_init,也会运行相同的代码。
对在 C++ 中使用向量有疑问。它与向量中的 push_back 方法有关。对于第一个程序,我使用 push_back 将元素插入到向量中。对于第二个程序,我使用 at() 将元素插入到向量中。
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main ()
{
std::vector<string> myvector (3);
cout << "In main" << endl;
for (unsigned i=0; i<myvector.size(); i++)
{
myvector.push_back("hi"); //Note: using push_back here.
}
cout << "elements inserted into myvector" << endl;
std::cout << "myvector contains:" << endl;
for (auto v: myvector)
cout << v << endl;
// access 2nd element
cout << "second element is " << myvector[1] << endl; …Run Code Online (Sandbox Code Playgroud)