Fork is not work in my code?!!!!

hani
I have tiny6410 code that read data from serial port.
here is my source code :
--------------------------------------------------------
#include "mainwindow.h"
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <stdio.h>   /* Standard input/output definitions */
#include <string.h>  /* String function definitions */
#include <unistd.h>  /* UNIX standard function definitions */
#include <fcntl.h>   /* File control definitions */
//#include <errno.h>   /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */
#include <string>    /*To use string type*/
#include <iostream>
#include<string>
#include <QtSql/qsql.h>

using namespace std;


//--------------------------------------------
int fd; /* File descriptor for the port */
#define MAXDATASIZE 100

//-------------------------------------
void closeport(void)
{
    close(fd);
}
//-------------------------------------
void configport(void)
{
    struct termios tty;
    struct termios tty_old;
    memset (&tty, 0, sizeof tty);

    /* Error Handling */
    if ( tcgetattr ( fd, &tty ) != 0 ) {
//       std::cout << "Error " << errno << " from tcgetattr: " <<
strerror(errno) << std::endl;
    }

    /* Save old tty parameters */
    tty_old = tty;

    /* Set Baud Rate */
    cfsetospeed (&tty, (speed_t)B9600);
    cfsetispeed (&tty, (speed_t)B9600);

    /* Setting other Port Stuff */
    tty.c_cflag     &=  ~PARENB;            // Make 8n1
    tty.c_cflag     &=  ~CSTOPB;
    tty.c_cflag     &=  ~CSIZE;
    tty.c_cflag     |=  CS8;

    tty.c_cflag     &=  ~CRTSCTS;           // no flow control
    tty.c_cc[VMIN]   =1;//  0;                  // read doesn't block
    tty.c_cc[VTIME]  = 10;// 2 but befor it 5;                  // 0.5
seconds read timeout
    tty.c_cflag     |=  CREAD | CLOCAL;     // turn on READ & ignore ctrl
lines

    /* Make raw */
    cfmakeraw(&tty);


    /* Flush Port, then applies attributes */
    tcflush( fd, TCIFLUSH );
    if ( tcsetattr ( fd, TCSANOW, &tty ) != 0) {
//       std::cout << "Error " << errno << " from tcsetattr" << std::endl;
    }
}

//------------------------------------


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    int  numbytes;
    char buf2[MAXDATASIZE];

    QString portname="ttySAC3";//ui->txtport->text();
    //QString portname=ui->txtport->text();

    portname="/dev/"+portname;
    fd=open(portname.toLatin1().data(),O_RDWR|O_NOCTTY|O_NDELAY);
    if (fd==-1)
    {
        ui->lblerr->setText("unable to open port ");
        return;
    }
    else
    {
        ui->lblerr->setText("<span style='color:green;'>succesfully open
port </span>");
        fcntl(fd,F_SETFL,0);

    //*****************************
    //      SerialCodes
    //*****************************]
    ui->txtcardno->setText("befor fork");
        if(!fork())
        {
            ui->txtcardno->setText("befor while");
            while(1)
            {
                memset(buf2,'\0',MAXDATASIZE);

                ui->txtcardno->setText("befor read");
                //------------------------------------------------
                if ((numbytes = read(fd,buf2, MAXDATASIZE-1)) == -1)
                {
                    ui->txtcardno->setText("Error");
                }
                else
                {
                    ui->txtcardno->setText("");
                    buf2[numbytes] = '\0';
                    //printf("RFID MONITORING => '%s'\n",buf2);
                    //QString s(buf2);
                    ui->txtcardno->setText("ok......................");
                    //break;
                }
            }
        }
    }
}

-------------------------------------------------------
all of these code run except fork block.  ui->txtcardno->setText("befor
fork");just txtcardno text is befor fork. and then nothing happan.
why the application does not run fork code block?