C ++线程,std :: system_error – 操作不允许?

所以我写了一个程序来testing64位kubuntu linux版本13.04上的线程。 其实我是从编写testing程序的其他人那里抢走了代码。

#include <cstdlib> #include <iostream> #include <thread> void task1(const std::string msg) { std::cout << "task1 says: " << msg << std::endl; } int main(int argc, char **argv) { std::thread t1(task1, "Hello"); t1.join(); return EXIT_SUCCESS; } 

我编译使用:

 g++ -pthread -std=c++11 -c main.cpp g++ main.o -o main.out 

然后跑:

 ./main.out 

另外,当我'ls -l'时,main.out像所有可执行文件一样以绿色文本显示,但在名称末尾有一个星号。 为什么是这样?

回到手头的问题:当我运行main.out时,出现一个错误,它说:

 terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted Aborted (core dumped) 

任何人有任何想法如何解决这个问题?

你没有正确的链接pthread,试试下面的命令(注意:命令很重要)

 g++ main.cpp -o main.out -pthread -std=c++11 

要么

做两个命令

 g++ -c main.cpp -pthread -std=c++11 // generate target object file g++ main.o -o main.out -pthread -std=c++11 // link to target binary