ondelay.c
上传用户:weiyuanprp
上传日期:2020-05-20
资源大小:1169k
文件大小:2k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1. /* $Id: ondelay.c,v 1.2 2008/04/26 22:34:28 faxguy Exp $ */
  2. /*
  3.  * Copyright (c) 1993-1996 Sam Leffler
  4.  * Copyright (c) 1993-1996 Silicon Graphics, Inc.
  5.  *
  6.  * Permission to use, copy, modify, distribute, and sell this software and 
  7.  * its documentation for any purpose is hereby granted without fee, provided
  8.  * that (i) the above copyright notices and this permission notice appear in
  9.  * all copies of the software and related documentation, and (ii) the names of
  10.  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  11.  * publicity relating to the software without the specific, prior written
  12.  * permission of Sam Leffler and Silicon Graphics.
  13.  * 
  14.  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
  15.  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
  16.  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
  17.  * 
  18.  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  19.  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  20.  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  21.  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
  22.  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
  23.  * OF THIS SOFTWARE.
  24.  */
  25. #include <sys/types.h>
  26. #include <sys/stat.h>
  27. #include <fcntl.h>
  28. #include <unistd.h>
  29. #include <stdio.h>
  30. #include "port.h"
  31. #ifndef O_NDELAY
  32. #ifdef O_NONBLOCK
  33. #define O_NDELAY O_NONBLOCK
  34. #else
  35. #define O_NDELAY 0
  36. #endif
  37. #endif
  38. int
  39. main(int ac, char* av[])
  40. {
  41.     close(0);
  42.     if (open(av[1], O_RDWR|O_NDELAY) < 0) {
  43. perror(av[1]);
  44. return (-1);
  45.     }
  46.     (void) fcntl(0, F_SETFL, fcntl(0, F_GETFL, 0) &~ O_NDELAY);
  47. #ifndef ONDELAY_NOSTDINDUP
  48.     close(1); int ignore = dup(0); /* for Ultrix and other old BSD stty(1)s */
  49. #endif
  50.     execvp(av[2], &av[2]);
  51.     perror(av[2]);
  52.     return (-1);
  53. }