<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def start_ppp_link(self):
        '''startup the link'''
        cmd = ['pppd']
        cmd.extend(self.command)
        (self.pid, self.ppp_fd) = pty.fork()
        if self.pid == 0:
            os.execvp("pppd", cmd)
            raise RuntimeError("pppd exited")
        if self.ppp_fd == -1:
            print("Failed to create link fd")
            return

        # ensure fd is non-blocking
        fcntl.fcntl(self.ppp_fd, fcntl.F_SETFL, fcntl.fcntl(self.ppp_fd, fcntl.F_GETFL) | os.O_NONBLOCK)
        self.byte_count = 0
        self.packet_count = 0

        # ask mavproxy to add us to the select loop
        self.mpself.select_extra[self.ppp_fd] = (self.ppp_read, self.ppp_fd)