我们在 C++里可以这么查看popen
是否正常执行:
FILE* pipe = popen("ls", "r");
if (!pipe) {
std::cout << errno << " "
<< stderror(errno) << std::endl;
}
但即使是执行比如ls
这种简单命令,也会提示 12 的错误码,以及 Cannot allocate memory 的错误信息。
Q. E. D.
我们在 C++里可以这么查看popen
是否正常执行:
FILE* pipe = popen("ls", "r");
if (!pipe) {
std::cout << errno << " "
<< stderror(errno) << std::endl;
}
但即使是执行比如ls
这种简单命令,也会提示 12 的错误码,以及 Cannot allocate memory 的错误信息。
Q. E. D.
popen
函数可以获取比std::system
函数更详细的程序输出。只是正常调用 popen 只能获取 stdout 的输出,而 stderr 的输出被忽略。
std::unique_ptr
, C++的程序就不应该出现普通指针了。所有普通指针都可以用std::unique_ptr
代替,避免手动删除对象。
std::tuple
的原理并不复杂,但有些细节非常有意思。其中有一个是至少在gnu C++ std
的实现中,std::tuple
是倒序存储的: