2
我正試圖從qprocess讀取和寫入現在。我做了一個小測試程序,它能夠輸入並在一個循環中重新顯示它在屏幕上。下面是從Qt的QProcess讀取和寫入
QString path = "./test";
tcd = new QProcess(this);
QStringList args;
args << "";
tcd->start(path,args);
if(!tcd->waitForStarted(3000))
{
stdoutput->append("<h1><font color=red>There was a problem starting the software, please try running the program again.</font></h1>");
}
tcd->write("hello\n");
tcd->write("hello\n");
tcd->write("hello\n");
tcd->write("hello\n");
//tcd->write("quit\n");
QObject::connect(tcd, SIGNAL(readyReadStandardOutput()), this, SLOT(appendTextBox()));
這是行不通的,除非我發送上次退出命令(終止我的測試程序)我的代碼。
這是我讀命令:
void TCD2_GUI::appendTextBox(){
stdoutput->append("new output available: \n");
QByteArray newData = tcd->readAllStandardOutput();
stdoutput->append(QString::fromLocal8Bit(newData));
}
如果我送不幹了,我會得到所有從程序中一次輸出,包括一切,我已將它。
我在這裏做錯了什麼?
根據要求,在此是從程序的代碼:
int main(int argC[], char* argV[]){
printf("Welcome!\n");
char* input = malloc(160);
gets(input);
while(strcmp(input,"quit") != 0)
{
printf("Got input %s\n", input);
gets(input);
}
}
是啊,但我追趕的信號,所以我不認爲應該的問題。但也許我對此有所瞭解。無論如何,我把一個tcd-> waitForBytesWritten();在我的代碼中,仍然沒有。編輯:我有一個按鈕,將輸入發送到我的代碼,所以它是在信號啓動後,仍然沒有。 – 2011-02-09 20:38:47