![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| High Level Programming Post questions about C, C++, Java, SQL, and other programming languages here. |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| c system call | rangaswamy | High Level Programming | 1 | 02-19-2008 10:53 AM |
| System hanged. help required. | praveen_b744 | UNIX for Advanced & Expert Users | 8 | 09-20-2007 06:03 PM |
| how to differentiate system call from library call | muru | UNIX for Advanced & Expert Users | 2 | 07-19-2007 08:20 PM |
| system() function call... | Vishnu | High Level Programming | 1 | 10-15-2002 08:36 AM |
| URGENT Help required regarding the use of FORK system call | kkumar1975 | UNIX for Advanced & Expert Users | 4 | 10-08-2001 02:33 PM |
|
|
Submit Tools | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
#1
|
|||
|
|||
|
Hi,
I try to write a C program which lists the output of a paticular command with all the available options (a to z) for the command in the directory of execution. This program will generate the output if the option exists for the particular command else it will display some message saying "Option not available for the command". ex: ls command has option "l" but not a option "y". It will display the output on ls -l execution and error message on ls -y execution. I am passing the "command to be executed(ex:ls,more)" in the command line argument. With in the program, I am using a while loop which initiated with 'a' and runs up to 'z'. I am using the "system()" unix call for the execution of command. please find my program below: Code:
# include <stdio.h>
# include <stdlib.h>
# include <strings.h>
main(argc,argv)
int argc;
char *argv[];
{
int i;
printf("%d is arg\nc",argc);
printf("arg0 is %s\n",argv[0]);
printf("arg1 is %s\n",argv[1]);
if(argc!=2)
{
printf("usage Wrong");
exit(0);
}
printf("The command you ahve entered is %s\n",argv[1]);
printf("Let us display the various outputs for different options for the command");
i='a';
while(i>='a'&& i<='z')
{
printf("\n option is %d ASCII is %c",i,i);
system("cat > /tmp/cmd_opt.sh << EOF
echo cmd is $1
echo opt is $2
$1 -$2
EOF ");
system("sh /tmp/cmd_opt.sh argv[1] i");
i++;
}
}
on compiling the program with cc, its giving a warning message "multi-line string literals are deprecated" But however on execution of the program, the output is as follows: Code:
[ramki@lindesk3 ramki]$ cc options_wth_exe_cmds.c -o cmd_opt options_wth_exe_cmds.c:28:16: warning: multi-line string literals are deprecated [ramki@lindesk3 ramki]$ ./cmd_opt ls 2 is arg carg0 is ./cmd_opt arg1 is ls The command you ahve entered is ls Let us display the various outputs for different options for the command cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 97 ASCII is a cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 98 ASCII is b cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 99 ASCII is c cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 100 ASCII is d cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 101 ASCII is e cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 102 ASCII is f cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 103 ASCII is g cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 104 ASCII is h cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 105 ASCII is i cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 106 ASCII is j cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 107 ASCII is k cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 108 ASCII is l cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 109 ASCII is m cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 110 ASCII is n cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 111 ASCII is o cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 112 ASCII is p cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 113 ASCII is q cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 114 ASCII is r cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 115 ASCII is s cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 116 ASCII is t cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 117 ASCII is u cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 118 ASCII is v cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 119 ASCII is w cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 120 ASCII is x cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 121 ASCII is y cmd is opt is /tmp/cmd_opt.sh: line 3: -: command not found /tmp/cmd_opt.sh: line 4: EOF: command not found option is 122 ASCII is z[ramki@lindesk3 ramki]$ Please help me in this.. Thanks, Ramkrix. Last edited by Yogesh Sawant; 03-18-2008 at 05:03 AM. Reason: added code tags |
| Forum Sponsor | ||
|
|
|
#2
|
|||
|
|||
|
You are going to have to write your multi-line command into a file, chmod the file to set the execute bit, then call system("./filename.sh");
|
|
#3
|
|||
|
|||
|
Why are you using C for this in the first place? Sounds like a shell script would be better.
|
|
#4
|
|||
|
|||
|
Most UNIX commands take alphanumeric characters as command line options. ls takes both uppercase/lowercase letters of the alphabet as well as numbers as command line options. So testing for i between 'a' and 'z' is too exclusive. It should take into account uppercase alphabets and numbers ranging from 0 - 9 as well.
|
|
#5
|
|||
|
|||
|
Ya I knew I cud do it simply by using a shell script. But the requirement is to be done with an C program and hence I did with C
|
|
#6
|
|||
|
|||
|
Quote:
But I have confusion how to pass my argv[1] and the value of i as argument to the shell script. To ask simple: How system() call recognize the command line args passed to an C program. SOURCE CODE: # include <stdio.h> # include <stdlib.h> # include <strings.h> main(argc,argv) int argc; char *argv[]; { int i; /*char *cmd,*opt;*/ printf("%d is arg\nc",argc); printf("arg0 is %s\n",argv[0]); printf("arg1 is %s\n",argv[1]); if(argc!=2) { printf("usage Wrong"); exit(0); } printf("The command you ahve entered is %s\n",argv[1]); printf("Let us display the various outputs for different options for the command"); i='a'; while(i>='a'&& i<='z') { printf("\n option is %d ASCII is %c",i,i); system("./filename.sh argv[1] i"); i++; } } OUTPUT: [ramki@lindesk3 ramki]$ cc options_wth_exe_cmds.c -o cmd_opt [ramki@lindesk3 ramki]$ ./cmd_opt ls 2 is arg carg0 is ./cmd_opt arg1 is ls The command you ahve entered is ls Let us display the various outputs for different options for the command cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 97 ASCII is a cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 98 ASCII is b cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 99 ASCII is c cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 100 ASCII is d cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 101 ASCII is e cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 102 ASCII is f cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 103 ASCII is g cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 104 ASCII is h cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 105 ASCII is i cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 106 ASCII is j cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 107 ASCII is k cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 108 ASCII is l cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 109 ASCII is m cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 110 ASCII is n cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 111 ASCII is o cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 112 ASCII is p cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 113 ASCII is q cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 114 ASCII is r cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 115 ASCII is s cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 116 ASCII is t cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 117 ASCII is u cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 118 ASCII is v cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 119 ASCII is w cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 120 ASCII is x cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found option is 121 ASCII is y cmd is argv[1] opt is i ./filename.sh: line 3: argv[1]: command not found Please help me in get rid of these.. |
|
#7
|
|||
|
|||
|
Quote:
|
|||
| Google The UNIX and Linux Forums |