Chapter Contents

Previous

Next
w_ioctl

w_ioctl



Pass Command and Arguments to an I/O Device

Portability: SAS/C extension


SYNOPSIS
DESCRIPTION
RETURN VALUE
PORTABILITY
EXAMPLE
RELATED FUNCTIONS


SYNOPSIS

#include <termios.h>

 int w_ioctl(int fileDescriptor, int command, int argLength,
             void *argBuffer);


DESCRIPTION

w_ioctl enables you to pass device-specific commands and arguments to an I/O device driver. w_ioctl accepts the following arguments:

fileDescriptor
is a file descriptor for a file associated with a device driver.

command
is an integer that specifies a device-specific command that is passed to the device driver.

argLength
specifies the length in bytes of the arg argument. The minimum length is 1 and maximum length is 1024.

argBuffer
is a pointer to the buffer that holds the arguments to be passed to the device driver.


RETURN VALUE

w_ioctl returns a 0 if successful and a -1 if unsuccessful.


PORTABILITY

The w_ioctl function may be useful in USS applications; however, it is not defined by the POSIX.1 standard and should not be used in portable applications.


EXAMPLE

The following example illustrates the use of w_ioctl to pass a command to the controlling terminal:

#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>

#define MAX_CHAR 256

main()
{
   int processNum = 0;
   W_PSPROC workArea;

      /* Initialize work area.                   */
   memset(&workArea, 0, sizeof(workArea));

      /* Allocate memory for character strings.  */
   if ((workArea.ps_conttyptr = (char *) malloc(MAX_CHAR)) == NULL) {
      perror("ps_conttyptr memory allocation error");
      abort();
   }
   else
      workArea.ps_conttylen = MAX_CHAR;

   if ((workArea.ps_pathptr = (char *) malloc(MAX_CHAR)) == NULL) {
      perror("ps_pathptr memory allocation error");
      abort();
   }
   else
      workArea.ps_pathlen = MAX_CHAR;

   if ((workArea.ps_cmdptr = (char *) malloc(MAX_CHAR)) == NULL) {
      perror("ps_cmdptr memory allocation error");
      abort();
   }
   else
      workArea.ps_cmdlen = MAX_CHAR;

      /* Get process information.                */
   do {
      processNum = w_getpsent(processNum, &workArea, sizeof(workArea));
      if (processNum == -1)
           perror("error in w_getpsent");
      else  {
         printf("process number = %dn", processNum);
         printf("process ID = %10dn", workArea.ps_pid);
         printf("User ID = %8unn", workArea.ps_ruid);
      }
   } while (processNum != 0 && processNum != 1);
}


RELATED FUNCTIONS

tcdrain , tcflow , tcflush , tcsendbreak


Chapter Contents

Previous

Next

Top of Page

Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.