我一直在這個問題的最後五個小時bussy,所以我希望有人可以幫助我。在我的C++程序中(我在Lubuntu的QTcreator中開發)我想在程序的子進程中運行airodump-ng。 airodump-ng的輸出應該指向父處理器的標準輸出。這與許多其他程序一起工作,但不夠airodump-ng。控制檯中根本沒有輸出。這個,或者我的Linux崩潰,我退出,當我重新登錄我的所有程序時,都會關閉。有人知道爲什麼嗎?execl在兒童過程中僅適用於特定情況
#include <QCoreApplication>
#include <unistd.h>
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <sys/wait.h>
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//execl("/usr/sbin/airodump-ng", "airodump-ng", (char*)0);
//dup2(1, 2); //pipe stderr to stdout
pid_t pidAirodump;
pid_t pidAircrack;
int pip[2];
if (pipe(pip) < 0) {
perror("allocating pipe for child input redirect");
return -1;
}
pidAirodump = fork();
if(pidAirodump > 0)//parent
{
pidAircrack = fork();
if(pidAircrack == 0)//pidAircrack
{
close(pip[0]);
dup2(pip[1], 2);
cout << "test" << endl;
//execl("/usr/sbin/arp", "arp", (char*)0);
execl("/usr/sbin/airodump-ng", "airodump-ng ", "mon0", (char*)0);
exit(0);
}
}
else//pidAirodump
{
exit(0);
}
wait(NULL);
return a.exec();
}