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:
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:
Please help me in this..
Thanks,
Ramkrix.
Last edited by Yogesh Sawant; 03-18-2008 at 09:03 AM..
Reason: added code tags
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.
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");
Hi Now, I have changed the source code as follows by putting that multiple literals in the system() earlier to an shellscript ./filename.sh now.
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
Trying to figure out a load issue with a webserver. I have traced a php script and noticed the following
connect(4, {sa_family=AF_INET, sin_port=htons(3306), sin_addr=inet_addr("XX.XX.XX.XX")}, 16) = -1 EINPROGRESS (Operation now in progress) <0.000035>
poll(, 1, 2000) = 1 () <0.000120>... (5 Replies)
hi everyone
i wrote a system call and compiled the kernel succesfully...
my system call is in a file in the kernel folder named my_syscall1.c (kernel/my_syscall1.c)
the header file for this system call i added it in the folder include like this include/my_syscall1/my_syscall1.h
my problem is... (2 Replies)
I have a cgi script which is called after certain time interval, which has this:
system ("ls -l /tmp/cgic* | grep -v \"cgicsave.env\" | awk '{print $5}'");
During the execution of this script,the output is 0 sometimes. But due to this the system call is not working at all and doesnt o/p... (2 Replies)
In the system call msgget(key,mode) for the argument key i want to use ftok call . I am really confused with the argument pathname in ftok call. I want to know the pathname of which file I want to specify over there. I am just a beginer to advanced unix plz help me out. (1 Reply)
Hi
I'm studing the system call. I've written a small program that return the time spent in doing some operations. Now I'd like to write one that return the time spent in user mode of a process.
I'm reading that i should use the tms struct:
clock_t times(struct tms *buf);
struct tms {... (2 Replies)
HI,
I have a Fedora running box. I am not able to ping/login. I guess it got hanged.
Can any one help me how to login to that box with out restart? (8 Replies)
Hi,
Ho do I differentiate system call from library call?
for example if I am using chmod , how do I find out if it is a system call or library call?
Thanks
Muru (2 Replies)
I desperately wanted one of the UNIX Gurus to help me resolve my problem asap(I have to deliver the code to the client by Monday 08-oct).
I have a file with around 5 million records (50 lakhs). Now my original process was taking around 30 hours to read the complete file, process each and every... (4 Replies)