Visit Our UNIX and Linux User Community


Beginners question about fork


 
Thread Tools Search this Thread
Top Forums Programming Beginners question about fork
# 1  
Old 11-19-2009
Beginners question about fork

Hi everyone:

I'm developing a dynamic library for notifications, this library is used for a daemon that i've programmed, when something goes wrong the library should send an email to an administrator, but since sending an email is a non-vital process then it can fail (it should work as an asynchronous process) so i'm considering to do that by using the fork function, however the entire process of daemon will be forked and i would be responsible for destroying the child process, so my question is, does exist any way more efficient to do this?

thanks in advance
# 2  
Old 11-19-2009
Sending email using a command like mailx or sendmail requires a fork/exec on the child
side then wait on the parent side. This is exactly what the system() call does.

The alternative is to do what sendmail does in C code. system("/usr/bin/sendmail ... ") being infinitely simpler. IF you're sending 100K mail messages per day you should incorporate sendmail code, otherwise for a few dozen messages per day, consider system().

Start here to see what sendmail does, it is open source.

Code:
http://www.sendmail.org/

# 3  
Old 11-20-2009
Thanks a lot, you gave me new ideas
# 4  
Old 11-26-2009
or a very naive solution:

Code:
#include <stdio.h>

int main (int argc, char ** argv) {

    FILE * fp = popen("mailx -s popen billy", "w");

    fputs("\n\nHello John!\n\n", fp);

    return 0;
}

(yes it does work)
# 5  
Old 11-26-2009
Quote:
Originally Posted by edgarvm
however the entire process of daemon will be forked
Forking is actually a fairly efficient way to create a process. Nearly all the memory of the old process can be shared or at least copy-on-write.

Previous Thread | Next Thread
Test Your Knowledge in Computers #579
Difficulty: Easy
A string is a disordered sequence of characters.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Question about global environment variables & fork() exec()

Hello... And thanks in advance for any help anyone can offer me on my question! I've been doing a lot of reading to try and find my answer... But I haven't had any luck What I'm trying to understand is where a child process inherits global environment variables from? I understand the exec()... (2 Replies)
Discussion started by: bodisha
2 Replies

2. Programming

Linux fork, execv, wait question

Hi All, I have a program for class that needs to do the following: 1. Print the directory entries from the current directory using ncurses 2. Provide a prompt next to each directory entry and allow the user to enter commands that may or may not be about the file 3. Execute those commands in... (1 Reply)
Discussion started by: afulldevnull
1 Replies

3. Programming

question about fork

i'm experimenting fork function and i found this code #include <stdio.h> #include <sys/stat.h> #include <sys/types.h> #include <wait.h> #include <fcntl.h> #include <unistd.h> int main(void) { int fd; pid_t p; p = fork(); fork(); if (p>0) { fork();} fork(); fork();... (6 Replies)
Discussion started by: blob84
6 Replies

4. Programming

Newbie question on exec,fork, wait,pipe C

Hello everybody.I want to make clear that i am not going to ask from anybody to build my asignement but i have a big problem. I can't seem to find anywhere ONE good example on C about what i am trying to do:wall:.I think it is simple. All i ask is one example, even a link is fine. So, i want to... (1 Reply)
Discussion started by: Cuervo
1 Replies

5. Programming

multiple fork() question

I writing a program that forks three times but only on the parent process. The three children processes then produces output in order. 1, 2, 3. I am confused on how to do this. I have tried multiple if and else if statements but the output does not come out right. How should I go about doing this? (1 Reply)
Discussion started by: TWhitt24
1 Replies

6. Shell Programming and Scripting

awk beginners question

hi, i start using awk and have a very basic problem. here's my code: #! /usr/bin/awk -f # 2010, scz # { $1 == "test" { print $2 } } this works on the command line but not as "program" - what is the difference between awk programs on the command line and executing awk... (3 Replies)
Discussion started by: svencz
3 Replies

7. Programming

Question About Multi-Processed Applications... fork()

Assume we have an application built on *nix that uses fork()...then the processes procedure is going to act as follow: X is considered a parent process (first click on application) Y is considered a child process of X (second click on application) Z is considered a child process of Y (third... (6 Replies)
Discussion started by: f.ben.isaac
6 Replies

8. Programming

A small question about fork()

Hello experts, I am using fork() in my code but I am confused which output comes first child or parent? I did the following code .My book shows parent first but my linux shows child first.Can anyone tell me why? #include <stdio.h> int main(){ int pid; printf("I am original process with pid... (5 Replies)
Discussion started by: mlhazan
5 Replies

9. Shell Programming and Scripting

awk - Beginners Question

I have my inputfile in the following format : From:sdhfhg dsfhsdjfjdsfh dsfjdjshjsd djfhsdjfjsdhjds Error Description <aa.aa.aa.aa.aa.aa> From:ksljfsdhfjh djfdsjkf sdjwoquk dsfsdfj Error Description <dd.dd.dd.dd.dd> I want to read the lines from tag 'From:' thrul <aa.aa.aa.aa.aa.aa>... (1 Reply)
Discussion started by: Amruta Pitkar
1 Replies

10. Programming

simple fork question

When executing this simple program: #include <unistd.h> void main() { int f; printf("\n Parent procces ID=%d\n",getpid()); f=fork(); if(f==0) { printf("\n Child process ID=%d father=%d\n",getpid(),getppid()); } ... (2 Replies)
Discussion started by: bb666
2 Replies

Featured Tech Videos