我认为问题是我没有使用 ./a.out 而不是 ./filename,但事实并非如此。
这是我编译程序的方式:
g++ -o -Wall -pthread filename.cpp
运行:
./filename
我认为运行 pthread 程序与运行标准 c++ 程序不同,但事实并非如此。
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
struct argStruct {
int arg1;
int arg2;
};
void *sum(void *arguments) {
struct argStruct *args = (struct argStruct *)arguments;
int a = args -> arg1;
int b = args -> arg2;
int c = a + b;
printf("%d + %d = %d ",a,b,c);
pthread_exit(NULL);
}
int main() {
pthread_t thr1, thr2;
struct argStruct args;
args.arg1 = 3;
args.arg2 = 10;
int t1, t2;
pthread_create(&thr1, NULL, &sum, (void *)&args);
pthread_create(&thr2, NULL, &sum, (void *)&args);
pthread_join(thr1, NULL);
pthread_join(thr2, NULL);
exit(EXIT_SUCCESS);
}
最佳答案
通过调用
g++ -o -Wall -pthread filename.cpp
您指示编译器将结果写入名为-Wall
的文件。
因此你想使用其中之一
g++ -Wall -pthread filename.cpp
g++ -Wall -pthread -o filename filename.cpp
第一个将结果写入a.out
,第二个写入filename
。 (它也会启用警告)
关于c++ - 我的文件可以编译,但是当我尝试运行它时得到 "no such file or directory",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43175379/