program tip

C ++ 스레드, std :: system_error-작업이 허용되지 않습니까?

radiobox 2020. 12. 30. 08:01
반응형

C ++ 스레드, std :: system_error-작업이 허용되지 않습니까?


그래서 64 비트 kubuntu linux 버전 13.04에서 스레드를 테스트하는 프로그램을 작성했습니다. 사실 저는 테스트 프로그램을 작성하는 다른 사람에게서 코드를 빼앗 겼습니다.

#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

참조 URL : https://stackoverflow.com/questions/17274032/c-threads-stdsystem-error-operation-not-permitted

반응형