So I made my own unix shell, but i want to make a background process when using the & appended to the end, so far most of the commands seem to work (except cd, but thats another story)
right now here is what I have got.
Im thinking maybe I shouldn't be using switch and maybe switch it to something else, and Im also unsure of how to actually CHECK to see if theirs an &, because im not sure if my parsearg function will do the trick
Rather than using your own ParseArgs function, C has a built-in function called "getopt". It is a lot cleaner and meant for parsing command line arguments. (getopt(3): Parse options - Linux man page)
Oh....well crap.
Oh well I mean the parsing function works....
I checked with some extra debugging to make sure it's parsing and it is, however Im just not so sure how to do a background process, but after re-looking at my code...i can def. find the & just by cycling through the parse function again and checking for an &......
However Im still clueless as to what to do for background processing.
I tried to checkfor &...but keep getting a seg fault, i tried a for loop but it wouldnt work either. any ideas?
Well if I could get that while loop to run id be able to get the & out....but for some reason i get a seg fault in the commented out section of the code....
---------- Post updated at 04:04 PM ---------- Previous update was at 04:00 PM ----------
It could be crashing because you don't necessarily have 20 arguments. in which case you'll be feeding strcmp either garbage or NULL, either of which would cause it to crash. You'll need to remember how many arguments parseargs found(maybe put it through its return value instead of 'void'?)
In any case I don't think strcmp will do what you want. It returns 0 when the two strings are exactly the same, meaning, it'll only match on a line with no newlines containing nothing but &. I think you want strstr or strchr instead, see their man pages.
---------- Post updated at 04:08 PM ---------- Previous update was at 04:04 PM ----------
I'm surprised this even compiled, a break in the default section is mandatory in some common compilers.
Imagine case 0 without the break. If execvp() fails and doesn't catch the error it might keep going, and print "DEBUG: child finished" because the case statements don't tell it where to end, just where to begin. But with the break, it will leave that section of code entirely like you expected it to do.
EDIT WOOT IT WORKS.
check dis out
It returns a bool & when it finds one, then removes it. I checked with some debug statements but it works and removes the & correctly so it can do the statements normally.
Problem is now......getting background process to run.......which im derping on bigtime
here is a copy of the output, notice the 0 next to DEBUG, and the 1 when & is found. it means the Bool BG is turned on, when it finds an &.
I
myshell> ls -a
. .. a.out fork.c Hello .hi shell shell.c
0DEBUG:Child Finished
myshell> ls -l &
total 36
-rwxr-xr-x 1 matt matt 8435 2010-09-26 20:43 a.out
-rw-r--r-- 1 matt matt 943 2010-09-26 20:44 fork.c
drwxr-xr-x 2 matt matt 4096 2010-09-27 02:13 Hello
-rwxr-xr-x 1 matt matt 8292 2010-09-27 18:06 shell
-rw-r--r-- 1 matt matt 1570 2010-09-27 18:06 shell.c
1DEBUG:Child Finished
myshell>
we are getting files on daily basis.we need to process these files.
i need a unix shell script where we can count
1-The no of files processed
2-No of data/record processed for each files.
The script should log these details into a database table. If there is any error while file... (3 Replies)
Hi,
I am using ksh , i have requirement to run 4 functions in background , 4 functions call are available in a case that case is also in function, i need to execute 1st function it should run in background and return to case and next i will call 2nd function it should run in background and... (8 Replies)
Hello,
I extracted a list of files in a directory with the command ls . However this is not my computer, so the ls functionality has been revamped so that it gives the filesizes in front like this :
This is the output of ls command : I stored the output in a file filelist
1.1M... (5 Replies)
NOTE: I am using BASH and Solaris 10 for this.
Currently in the process of building a script that has a main "watcher" daemon that reads a configuration file and starts background processes based on it's global configuration. It is basically an infinite loop of configuration reading. Some of the... (4 Replies)
I have script 3 scripts 1 parent (p1) and 2 children child1 and child2
I have script 3 scripts
1 parent
2 children
child1
child2
In the code below the 2 child processes fire almost Instantaneously in
the background, Is that possible to know the status of pass/fail of each
process... (12 Replies)
I have script 3 scripts
1 parent
2 children
child1
child2
In the code below the 2 child processes fire almost Instantaneously in the background, Is that possible to know the status of pass/fail of each process "as it happens" ?
In the present scenario although Child2... (5 Replies)
I have a friend at work that asked me a question today and I figured I would seek help here. How does a shell script know whether it is running in the background or not?
Thanks in advance for help (5 Replies)
Hi,
I'm new to this forums and to Unix OS...
Is this the right place to put this thread?
I just need to ask how to set the wallpaper that goes through the x-term windows in a Unix system? It's as if the x-term windows is transparent...
I tried modifying the .login file and things got... (5 Replies)
Hi,
I am a newbie learing Unix , I have started with teh book "the Design of the Unix OS" by Bach.After which I plan to read "UNIX Network Programming" by Richard Stevens.
What is the background that one needs to learn unix. I know C. But I am not sure about my Operating Systems... (4 Replies)