Visit Our UNIX and Linux User Community

Full Discussion: Help with task daemon
Top Forums Programming Help with task daemon Post 302305400 by pludi on Wednesday 8th of April 2009 08:08:20 PM
Old 04-08-2009
Quote:
Originally Posted by james2432
believe it or not but this is my first c program
I do
Quote:
Originally Posted by james2432
I am trying to make a daemon that checks if mplayer is running (it's for a projection room) and if it is not then to run mplayer with a file..
Not exactly what a daemon is for IMO, but that's not for here to discuss
Quote:
Originally Posted by james2432
So far it's not working and I don't know why
What exactly isn't working. I found a few things that might cause problems, but that could or couldn't be what you're looking for.
Code:
#include <sys/types.h>  /* include this before any other sys headers */ 
#include <sys/wait.h>   /* header for waitpid() and various macros */ 
#include <signal.h>     /* header for signal functions */ 
#include <stdio.h>      /* header for fprintf() */ 
#include <unistd.h>     /* header for fork() */ 
 
void  ChildProcess(void);                /* child process prototype  */ 
void  ParentProcess(void);               /* parent process prototype */
 
int  main(void) 
{     pid_t pid;

    while(1){ 
            int rc;
            // I don't think this is standard C behaviour, execpt if you want to
            // bit-shift left an uninitialized variable
            rc<<system("ps ux | awk '/mplayer/ && !/awk/ {print $2}'"); 
            [color=blue]// Where did that come from?
          rc = WEXITSTATUS(rc); /* Check if mplayer is running */ 
       if(rc >= 0 ){ 
              pid = fork();
              if(pid>=0){     
                if (pid == 0)  
                 ChildProcess(); 
                else  
                 ParentProcess(); 
                } 
              } 
       else 
          {/*fork error*/}
   
     }
return (0); 
} 
 
void  ChildProcess(void) 
{ 
     execvp("mplayer ~/test.avi",NULL); 
     exit(0); 
} 
 
void  ParentProcess(void) 
{ 
    sleep(2); 
    return; 
}

As a guideline, a daemon usually has this workflow:
Code:
initialize
pid=fork
if(pid==0)
    exit //parent
else
    while(1)
        do something

Your code, OTOH, never goes into background, and, in case mplayer keeps on crashing, will waste quite some time on process creation.
In your ChildProcess() function you could replace the execvp/exit combination with a simple exec, as this will replace the current process image (that of the child) with that of the program you're specifying.
 
Test Your Knowledge in Computers #355
Difficulty: Medium
BWK awk, also known as nawk, refers to the awk version by Ken Thompson.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

process vs task

Hi, I am new to this forum and unix too. I have just started learning unix. As I was going through the first chapter, I read that unix is multitasking, multiprogramming, multiprocessing and multiuser OS. My question is: Is there any difference between a TASK and a PROCESS. How are PROCESS... (2 Replies)
Discussion started by: hana
2 Replies

2. Shell Programming and Scripting

comment and Uncomment single task out of multiple task

I have a file contains TASK gsnmpproxy { CommandLine = $SMCHOME/bin/gsnmpProxy.exe } TASK gsnmpdbgui { CommandLine = $SMCHOME/bin/gsnmpdbgui.exe I would like to comment and than uncomment specific task eg TASK gsnmpproxy Pls suggest how to do in shell script (9 Replies)
Discussion started by: madhusmita
9 Replies

3. Shell Programming and Scripting

Parse an XML task list to create each task.xml file

I have an task definition listing xml file that contains a list of tasks such as <TASKLIST <TASK definition="Completion date" id="Taskname1" Some other <CODE name="Code12" <Parameter pname="Dog" input="5.6" units="feet" etc /Parameter> <Parameter... (3 Replies)
Discussion started by: MissI
3 Replies

4. Shell Programming and Scripting

Need a help to automate a task

I need to automate a manual task using shell scripting. The scenario is like :- #!/usr/bin/sh echo "please enter the name of the lab server to test ..." read s ssh $s This is peace of the script which will allow me to login to another server using "ssh". I have a conf file which is having... (4 Replies)
Discussion started by: Renjesh
4 Replies

5. Shell Programming and Scripting

last task for my script

hi, infile- create table salary ( occupation_code char(40), earnings decimal(10,2), occ_yearend integer ); outfile- salary:create table salary salary:( occupation_code char(40), salary: earnings decimal(10,2), salary: occ_yearend integer salary:); Thanks. (4 Replies)
Discussion started by: dvah
4 Replies

6. Shell Programming and Scripting

task

Hi all, I'm newbie and stuck here. Thanks for any help. Input(txt file) a b X c d Y e f Z g h W Requested output: a b X Y c d Y X e f Z W g h W Z Please use code tags when posting data and code samples! (10 Replies)
Discussion started by: hernand
10 Replies

7. Shell Programming and Scripting

Task

Hi experts, I have a problem with the below shell task: I need to modify the file creatin a paired row , per each row which matches filter (e.g. number of nonempty columns = 5) Output should look like this: second row is original one from the input, first row(red) is pairing row, it's... (29 Replies)
Discussion started by: hernand
29 Replies

8. Shell Programming and Scripting

Parallelize a task that have for

Dear all, I'm a newbie in programming and I would like to know if it is possible to parallelize the script: for l in {1..1000} do cut -f$l quase2 |tr "\n" "," |sed 's/$/\ /g' |sed '/^$/d' >a_$l.t done I tried: for l in {1..1000} do cut -f$l quase2 |tr "\n" "," |sed 's/$/\ /g' |sed... (7 Replies)
Discussion started by: valente
7 Replies

9. Homework & Coursework Questions

[HELP] Easy task

I have a simple task for my school work. I'm new with unix, so i need help. I need to write a scenario. Task is. From created txt file read first 3 words and create a 3 catalogs with those 3 words. 2 of those new catalogs should be transferred to other directory. If someone could help me just... (1 Reply)
Discussion started by: justynykas
1 Replies

10. UNIX for Beginners Questions & Answers

Task 1 bible

Hi i have recently started learning Bash scripting to learn a new skill. My boss has assigned me a task but i am struggling to complete it would really be thankful for some help ill put what i have so far: Test1-bible is the directory and each chapter of the bible is a sub-directory hence i... (1 Reply)
Discussion started by: Atreus20
1 Replies

Featured Tech Videos

All times are GMT -4. The time now is 04:06 AM.
Unix & Linux Forums Content Copyright 1993-2021. All Rights Reserved.
Privacy Policy