home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / sys / hp / 8721 < prev    next >
Encoding:
Text File  |  1992-07-30  |  2.6 KB  |  92 lines

  1. Path: sparky!uunet!usc!sdd.hp.com!uakari.primate.wisc.edu!hp9000.csc.cuhk.hk!a866700
  2. From: a866700@hp9000.csc.cuhk.hk (Wong Siu To)
  3. Newsgroups: comp.sys.hp
  4. Subject: Mkdir in fork
  5. Message-ID: <1992Jul30.105754.7370@hp9000.csc.cuhk.hk>
  6. Date: 30 Jul 92 10:57:54 GMT
  7. Organization: The Chinese University of Hong Kong
  8. Lines: 82
  9.  
  10. Hi all,
  11.  
  12. I'm using HP 720 running HP-UX 8.07.  I tried to mkdir in a child
  13. process.  It fails but returns with return code 0.  Following a sample
  14. program (actually, it's extracted from a program in the public domain
  15. version of NQS) :
  16.  
  17. --------------------------- test.c -------------------------------
  18. #include <stdio.h>
  19. #include <errno.h>
  20.  
  21. extern int errno;            /* System call error number */
  22. extern void sync();            /* Schedule system buffers for */
  23.                     /* writing */
  24. extern char *sys_errlist[];        /* Error list explanation */
  25.  
  26. main ()
  27. {
  28.     int childpid;
  29.     char *path;
  30.        char *argv [3];                 /* Argv() to mkdir() */
  31.        char *envp [1];                 /* Envp() to mkdir() */
  32.  
  33.         path="/usr/spool/nqs/private/root/control/+++++0";
  34.         childpid = fork();
  35.         if (childpid == -1) {
  36.             /*
  37.              *  The fork was not successful!
  38.              */
  39.             printf ("Utility [nqsmkdirs]:  Unable to fork() ");
  40.             printf ("mkdir process.\n");
  41.             printf ("Utility [nqsmkdirs]:  Reason: %s.\n",
  42.                 sys_errlist [errno]);
  43.             printf ("Utility [nqsmkdirs]:  Aborting.\n");
  44.             fflush (stdout);
  45.             fflush (stderr);
  46.             sync();        /* Schedule all dirty system I/O */
  47.                     /* buffers for writing (so that */
  48.                     /* directory blocks refering to the */
  49.                     /* newly created files will be */
  50.                     /* securely written to disk */
  51.             exit (6);
  52.         }
  53.         if (childpid == 0) {
  54.             /*
  55.              *  We are the child mkdir process.
  56.              */
  57.             argv [0] = "-mkdir";
  58.             argv [1] = path;
  59.             argv [2] = (char *) 0;
  60.             envp [0] = (char *) 0;
  61.             /*
  62.              *  Create the named directory.
  63.              */
  64.             printf ("Utility [nqsmkdirs]:  Creating: %s.\n",
  65.                 path);
  66.             execve ("/bin/mkdir", argv, envp);
  67.             /*
  68.              *  The execve() failed!
  69.              */
  70.             printf ("Utility [nqsmkdirs]:  Unable to execve() ");
  71.             printf ("mkdir program.\n");
  72.             printf ("Utility [nqsmkdirs]:  Reason: %s.\n",
  73.                 sys_errlist [errno]);
  74.             printf ("Utility [nqsmkdirs]:  Exiting.\n");
  75.             fflush (stdout);
  76.             fflush (stderr);
  77.         }
  78. }
  79. --------------------------- end of test.c --------------------------
  80.  
  81. Would anyone pls help ?
  82.  
  83. Thanks in advance.
  84.  
  85. Regards,
  86.  
  87. -- 
  88. ----------------------------------------------------------------------------
  89. ST Wong                       BITNET: A866700@CUCSC.BITNET
  90. Computer Services Centre               Internet: a866700@hp9000.csc.cuhk.hk
  91. The Chinese Univsersity of Hong Kong             st@csc.mgate1.cuhk.hk 
  92.