如题。
可执行的独立程序如下,是用C语言实现的哲学家就餐问题
#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>
#include<unistd.h>
#include<semaphore.h>
#define N 3
#define LEFT i
#define RIGHT (i+1)%N
sem_t mutex[N];
int id[N]={0,1,2};
pthread_t thread[N];
void* solve(void*param){
int i=*((int*)param);
while(i>=0){
if(i%2==0){
sem_wait(&mutex[LEFT]);
sem_wait(&mutex[RIGHT]);
printf("phlio %d is eating\n",i);
sleep(1);
sem_post(&mutex[RIGHT]);
sem_post(&mutex[LEFT]);
printf("phlio %d is over\n",i);
sleep(1);
}else{
sem_wait(&mutex[RIGHT]);
sem_wait(&mutex[LEFT]);
printf("phlio %d is eating\n",i);
sleep(1);
sem_post(&mutex[LEFT]);
sem_post(&mutex[RIGHT]);
printf("phlio %d is over\n",i);
sleep(1);
}
}
}
int main(){
int i=0;
for(i=0; i<N; i++){
sem_init(&mutex[i],0,1);
pthread_create(&thread[i],NULL,solve,&id[i]);
}
for(i=0; i<N; i++){
pthread_join(thread[i],NULL);
}
return 0;
}
Qt中使用按钮启动外部C程序,已经尝试过的方法如下(4种方法):
//第一种方法:
void Dialog::on_pushButton_clicked()
{
QStringList strList;
strList <<"null"<<"null";
QProcess::startDetached("/home/alison/ph1/a.out",strList,"/home/alison/ph1");
}
//第二种方法:
void MainWindow::on_pushButton_clicked()
{
QProcess *process=new QProcess;
QStringList args;
args<<"./a.out";
process->start("/home/alison/ph2/a.out",args);
}
//第三种方法:
void MainWindow::on_pushButton_clicked()
{
QProcess *process=new QProcess;
QStringList str;
str <<"";
process->start("/home/alison/ph2/a.out");
}
//第四种方法:
void MainWindow::on_pushButton_clicked()
{
QProcess *process=new QProcess;
QProcess::execute("/home/alison/ph2/a.out");
}
Qt程序编译没有错误,但运行之后点击按钮没有相应的C程序运行的结果
希望各位大佬可以帮我解答一下哪里需要修改,十分感谢!