Inappropriate ioctl for device


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Inappropriate ioctl for device
# 1  
Old 08-12-2005
Data Inappropriate ioctl for device

Dear all,

Problem goes like this:

I have a shell script which when run manually runs perfectly.
When same script is executed through a job schdeduler I get an error as Inappropriate ioctl for device and the script fails.

This problems seems quite guiling to me.
Any clues are heartly welcomed.

Thanks
Rishi
# 2  
Old 08-12-2005
does your script have any "read" statements? is there any reason why the script's stdin or stdout would need to be connected to a terminal?
# 3  
Old 08-12-2005
My script is not at all interactive and does not read from stdin.

yeah it do write to some /tmp directory while sorting the data.
And to my understanding this happens just when it tries to write to this mount.

Thanks for helping framing the problem more clear. hope this will help everyone to figure out the reason why it does happen?


Thanks
Rishi
# 4  
Old 08-12-2005
You are doing something in your script directly or indirectly that does indeed require a tty, but it is not a read nor a write. Put some echo statement in your script "echo at point 1", "echo at point 2", etc until you see the statement that fails.
# 5  
Old 08-16-2005
Data

Quote:
Originally Posted by Perderabo
You are doing something in your script directly or indirectly that does indeed require a tty, but it is not a read nor a write. Put some echo statement in your script "echo at point 1", "echo at point 2", etc until you see the statement that fails.
Thanks Perderabo for going over the question.
As the code exists in production and we cannot change code without lots of approvals.

Will like to elaborate the problem more clearly see if you can help.


We have a script say run_job.ksh which is executed from a scheduler.
This scripts calls a C executable, which itself invokes sort command.

The snippet of the code calling sort command is like this:

Code:
 sprintf(tmpSortFileName, "/tmp/temp%s", "tempIRBPAVAInputFile");
 
    /* Sort by carrier ID, company #, bill to RAO, statement date, BTN, ??? */
    sprintf(sortcmd,
             "sort -k 1.132,1.135 -k 1.118,1.119 -k 1.118,1.119 "\
                  "-k 1.112,1.114 -k 1.104,1.111 -k 1.142,1.151 "\
                  "-k 1.155,1.162 %s > %s", inputFileName, tmpSortFileName);
    system(sortcmd);
 
    if(errno)
    {
       fprintf(stderr,
              "Error sorting the input file %s...\nExiting...\n",
                inputFileName);
       exit(ERR);
    }

if same code we execute through a telnet session it succeeds while if we invoke the executable through scheduler we are thrown the error present in "if" condition i.e. Error sorting the input file

This is the sequence of error I receive in scheduler logs:

: Inappropriate ioctl for device
Error sorting the input file /tmp/tempIRBPAVAInputFile...
Exiting...


Any help will be highly appreciated.
# 6  
Old 08-16-2005
That piece of c code is not the problem. Did you surround the this program with echo statements to be sure that it is causing the problem? If so, look further in the program for some tty specific operation.
# 7  
Old 08-16-2005
Data

yes, as I told I am not in position to add echo statments but there do exists a echo statment and data echoed is perfectly visible in log.

After tht echo call only the C executable is invoker with appropiate arguments.

Why i am worried with this pieve of code specifically is we have two functioncalls sortTempInputFile and sortInputFile.

First call "sortInputFile" is always successfull while second call where only filename is different fails "sortTempInputFile"

before invoking the sort command we even check the error code.

complete code of function is:

Code:
void sortTempInputFile(char *inputFileName)
{
    char sortcmd         [1024] = "\0";
    char tmpSortFileName [1024] = "\0";
 
    iFileName[0] = '\0';
 
    if(errno)
    {
       perror(" ");
    }
 
    sprintf(tmpSortFileName, "/tmp/temp%s", "tempIRBPAVAInputFile");
 
    /* Sort by carrier ID, company #, bill to RAO, statement date, BTN, ??? */
    sprintf(sortcmd,
             "sort -k 1.132,1.135 -k 1.118,1.119 -k 1.118,1.119 "\
                  "-k 1.112,1.114 -k 1.104,1.111 -k 1.142,1.151 "\
                  "-k 1.155,1.162 %s > %s", inputFileName, tmpSortFileName);
    system(sortcmd);
 
    if(errno)
    {
       fprintf(stderr,
              "Error sorting the input file %s...\nExiting...\n",
                inputFileName);
       exit(ERR);
    }
 
    sprintf(sortcmd, "chmod 777 %s", tmpSortFileName);
    system(sortcmd);
 
    if(errno)
    {
       fprintf(stderr,"%s%s\n",
               "Error changing permissions for the temp input file ...",
               "Exiting...");
 
       exit(ERR);
    }
 
    sprintf(sortcmd, "mv -f %s %s", tmpSortFileName, inputFileName);
    system(sortcmd);
 
    if(errno)
    {
       fprintf(stderr,"Error moving the input file ...\nExiting...\n");
       exit(ERR);
    }
 
}

I greped for tty in all the scripts but could not find one...is there anyway we will be connecting to tty?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Inappropriate ioctl for device

Sample program tty, this will be get called from my script test_script. #include <stdio.h> #include <unistd.h> #define TTY_NAME_MAX 32 #define STDIN_FILENO 0 /* Standard input. */ int main(void) { int ret = 0; char local_device_file; printf("\npid =... (7 Replies)
Discussion started by: Gajendra_PH
7 Replies

2. UNIX for Dummies Questions & Answers

Tcgetattr: Inappropriate ioctl for device

Hi, ssh -q -t -l $usr $host bin/test.sh I am using above command to run script remotely. script is working without any issues. but I am getting "tcgetattr: Inappropriate ioctl for device" message on console. plz help how can I avoid this message. Thanks Moved thread from Emergency... (1 Reply)
Discussion started by: Kri
1 Replies

3. UNIX for Advanced & Expert Users

nohup: can't detach from console: Inappropriate ioctl for device

Hi! I am getting a nohup issue on mac osx while trying to start a process through nohup in the startup script. nohup: can't detach from console: Inappropriate ioctl for device Please help! Thanks, Allan. (0 Replies)
Discussion started by: jacki
0 Replies

4. Shell Programming and Scripting

tcgetattr: Inappropriate ioctl for device after ssh command

Hello everyone I am finishing a script allowing me to purge logs on multiple servers, i have one last pb with the ssh command.........it is throwing me the following error : tcgetattr: Inappropriate ioctl for device (full screen in attached file 1, full script in attached file 2) It... (15 Replies)
Discussion started by: jimmy75_13
15 Replies

5. Shell Programming and Scripting

hdparm + Inappropriate ioctl for device

Hi All, Am finding performance of my SD card using hdparm. Code: hdparm -tT /dev/BlockDev0 /dev/BlockDev0: Timing cached reads: 1118 MB in 2.00 seconds = 558.61 MB/sec HDIO_DRIVE_CMD(null) (wait for flush complete) failed: Inappropriate ioctl for device Timing buffered disk... (1 Reply)
Discussion started by: amio
1 Replies

6. UNIX for Dummies Questions & Answers

mt command shows /dev/tape: inappropriate ioctl for device

Hello guys, on my Red Hat machine the /bin/mt status command gives the output dev/tape: inappropriate ioctl for device. This messages comes up after the Server has been rebooted. Anybody an idea? Thx masterofdesaster (8 Replies)
Discussion started by: masterofdesaste
8 Replies

7. Solaris

Inappropriate ioctl for device, format error

When I try to format a slice in Solaris 10 I get the follow error : -bash-3.00# mkfs /dev/dsk/c1d0s5 18877824 Can not determine partition size: Inappropriate ioctl for device Some format command output:.... AVAILABLE DISK SELECTIONS: 0. c1d0 <DEFAULT cyl 38735 alt 2 hd 64 sec 63>... (2 Replies)
Discussion started by: spoonman
2 Replies

8. UNIX for Dummies Questions & Answers

Inappropriate ioctl for device

Hello, I have a cron entry: 59 23 * * * . $HOME/.profile;mydate=`date '+%Y%m%d'`;mv filename filename_$mydate Which works fine interactively, but gives me the following error when it runs in cron: Your "cron" job on servername . $HOME/.profile;mydate=`date '+ produced the... (4 Replies)
Discussion started by: steelrose
4 Replies

9. UNIX for Dummies Questions & Answers

Inappropriate ioctl for device

When I try to format a slice in Solaris 10 I get the follow error :confused: : -bash-3.00# mkfs /dev/dsk/c1d0s5 18877824 Can not determine partition size: Inappropriate ioctl for device Some format command output:.... AVAILABLE DISK SELECTIONS: 0. c1d0 <DEFAULT cyl 38735 alt 2... (0 Replies)
Discussion started by: spoonman
0 Replies

10. Filesystems, Disks and Memory

Inappropriate ioctl for device

Hi, We are running a perl script to upload some data using SQL* Loader. We pipe the data in a http request to SQL*Loader which loads the data to the database. We encounter the error "Inappropirate ioctl for device" when we try to upload huge data. Any solution would be greatly appreciated.... (4 Replies)
Discussion started by: tojaiganesh
4 Replies
Login or Register to Ask a Question