Sponsored Content
Top Forums Programming Unix Shell background processing Post 302457316 by Mercfh on Monday 27th of September 2010 06:09:09 PM
Old 09-27-2010
EDIT WOOT IT WORKS.
check dis out
Code:
#include <sys/wait.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
#include <string>
#include <iostream>
#include <stdlib.h> 

using namespace std;

bool ParseArg(char* cmnd, char* cmd[], char input[],bool BG)
{
		
        cout << "myshell> ";
        cin.getline(input,50);
	cmnd = strtok(input, " ");
	int i = 0;

	while(cmnd != NULL)
	{
	    
	    cmd[i] = cmnd;
	    if(strcmp(cmd[i], "&") == 0){
//Debug	    cout << "& found";
	    cmd[i] = NULL;
	    return true;
	}
	    
//Debug	    cout << cmd[i] << " ";
	    i++;
	    cmnd = strtok(NULL, " ");
	}
	return false;
}

void Clean(char* cmd[])
{
//Clean Array
        for(int a=0; a < 40; a++)
        {
             cmd[a] = NULL;
        }
}

void Execute(char* cmd[])
{
    pid_t pid;
    pid = fork();
    switch(pid)
    {
        case -1:  
            cout << "DEBUG:Fork Failure" << endl;
            exit(-1);
        case  0:
            execvp(cmd[0], cmd);
            
            if(execvp(cmd[0], cmd) == -1)
            {
                cout << "Command Not Found" << endl;
                exit(0);
            }
   
        default:  
            wait(NULL);
            cout << "DEBUG:Child Finished" << endl;
    }
    
}

int main()
{
   char* cmnd;
   char* cmd[40];
   char input[50]; 
   bool BG = false;

	

   while(cmd[0] != NULL)
   {
    	Clean(cmd);
   	BG = ParseArg(cmnd, cmd, input, BG);
	cout << BG;
   	if(strcmp(cmd[0], "exit") == 0 || strcmp(cmd[0], "quit") == 0 )
   	{
             break;
   	}
	else
	{
            Execute(cmd);
	}
	
   }

   return 1;

}

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>

Last edited by Mercfh; 09-28-2010 at 06:57 PM..
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

background for unix

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)
Discussion started by: ramyar
4 Replies

2. UNIX Desktop Questions & Answers

Unix Background

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)
Discussion started by: Gri3v3r7
5 Replies

3. Shell Programming and Scripting

Background shell script

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)
Discussion started by: Moofasa
5 Replies

4. Shell Programming and Scripting

run a shell in the background

How can I run a shell in the background? cat test.sh #!/bin/sh sleep 600 Thank u very much indeed! (2 Replies)
Discussion started by: GCTEII
2 Replies

5. Linux

background processing in BASH

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)
Discussion started by: jville
5 Replies

6. Shell Programming and Scripting

background processing in BASH

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)
Discussion started by: jville
12 Replies

7. Shell Programming and Scripting

BASH - Handling background processes - distributed processing

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)
Discussion started by: dcarrion87
4 Replies

8. Programming

awk processing / Shell Script Processing to remove columns text file

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)
Discussion started by: ajayram
5 Replies

9. Shell Programming and Scripting

How to run multiple functions in Background in UNIX Shell Scripting?

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)
Discussion started by: karthikram
8 Replies

10. Shell Programming and Scripting

How to log file processing details to database table usnig UNIX shell script?

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)
Discussion started by: Atul kumar
3 Replies
std::__atomic_base< _IntTp >(3) 			     Library Functions Manual				   std::__atomic_base< _IntTp >(3)

NAME
std::__atomic_base< _IntTp > - SYNOPSIS
Inherited by std::atomic< char >, std::atomic< char16_t >, std::atomic< char32_t >, std::atomic< int >, std::atomic< long >, std::atomic< long long >, std::atomic< short >, std::atomic< signed char >, std::atomic< unsigned char >, std::atomic< unsigned int >, std::atomic< unsigned long >, std::atomic< unsigned long long >, std::atomic< unsigned short >, and std::atomic< wchar_t >. Public Member Functions __atomic_base (const __atomic_base &)=delete constexpr __atomic_base (__int_type __i) noexcept bool compare_exchange_strong (__int_type &__i1, __int_type __i2, memory_order __m1, memory_order __m2) noexcept bool compare_exchange_strong (__int_type &__i1, __int_type __i2, memory_order __m1, memory_order __m2) volatilenoexcept bool compare_exchange_strong (__int_type &__i1, __int_type __i2, memory_order __m=memory_order_seq_cst) noexcept bool compare_exchange_strong (__int_type &__i1, __int_type __i2, memory_order __m=memory_order_seq_cst) volatilenoexcept bool compare_exchange_weak (__int_type &__i1, __int_type __i2, memory_order __m1, memory_order __m2) noexcept bool compare_exchange_weak (__int_type &__i1, __int_type __i2, memory_order __m1, memory_order __m2) volatilenoexcept bool compare_exchange_weak (__int_type &__i1, __int_type __i2, memory_order __m=memory_order_seq_cst) noexcept bool compare_exchange_weak (__int_type &__i1, __int_type __i2, memory_order __m=memory_order_seq_cst) volatilenoexcept __int_type exchange (__int_type __i, memory_order __m=memory_order_seq_cst) noexcept __int_type exchange (__int_type __i, memory_order __m=memory_order_seq_cst) volatilenoexcept __int_type fetch_add (__int_type __i, memory_order __m=memory_order_seq_cst) noexcept __int_type fetch_add (__int_type __i, memory_order __m=memory_order_seq_cst) volatilenoexcept __int_type fetch_and (__int_type __i, memory_order __m=memory_order_seq_cst) noexcept __int_type fetch_and (__int_type __i, memory_order __m=memory_order_seq_cst) volatilenoexcept __int_type fetch_or (__int_type __i, memory_order __m=memory_order_seq_cst) noexcept __int_type fetch_or (__int_type __i, memory_order __m=memory_order_seq_cst) volatilenoexcept __int_type fetch_sub (__int_type __i, memory_order __m=memory_order_seq_cst) noexcept __int_type fetch_sub (__int_type __i, memory_order __m=memory_order_seq_cst) volatilenoexcept __int_type fetch_xor (__int_type __i, memory_order __m=memory_order_seq_cst) noexcept __int_type fetch_xor (__int_type __i, memory_order __m=memory_order_seq_cst) volatilenoexcept bool is_lock_free () const noexcept bool is_lock_free () const volatilenoexcept __int_type load (memory_order __m=memory_order_seq_cst) const noexcept __int_type load (memory_order __m=memory_order_seq_cst) const volatilenoexcept operator __int_type () const noexcept operator __int_type () const volatilenoexcept __int_type operator&= (__int_type __i) noexcept __int_type operator&= (__int_type __i) volatilenoexcept __int_type operator++ (int) noexcept __int_type operator++ (int) volatilenoexcept __int_type operator++ () noexcept __int_type operator++ () volatilenoexcept __int_type operator+= (__int_type __i) noexcept __int_type operator+= (__int_type __i) volatilenoexcept __int_type operator-- (int) noexcept __int_type operator-- (int) volatilenoexcept __int_type operator-- () noexcept __int_type operator-- () volatilenoexcept __int_type operator-= (__int_type __i) noexcept __int_type operator-= (__int_type __i) volatilenoexcept __atomic_base & operator= (const __atomic_base &)=delete __atomic_base & operator= (const __atomic_base &) volatile=delete __int_type operator= (__int_type __i) noexcept __int_type operator= (__int_type __i) volatilenoexcept __int_type operator^= (__int_type __i) noexcept __int_type operator^= (__int_type __i) volatilenoexcept __int_type operator|= (__int_type __i) noexcept __int_type operator|= (__int_type __i) volatilenoexcept void store (__int_type __i, memory_order __m=memory_order_seq_cst) noexcept void store (__int_type __i, memory_order __m=memory_order_seq_cst) volatilenoexcept Detailed Description template<typename _IntTp>struct std::__atomic_base< _IntTp > Base class for atomic integrals. Definition at line 117 of file atomic_base.h. Author Generated automatically by Doxygen for libstdc++ from the source code. libstdc++ Tue Jun 10 2014 std::__atomic_base< _IntTp >(3)
All times are GMT -4. The time now is 10:34 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy