Sponsored Content
Top Forums Programming Multi process programming in C Post 302894454 by alister on Tuesday 25th of March 2014 02:08:48 PM
Old 03-25-2014
As before, I did not compile or test the code. There may be other issues.

content is allocated and freed but never used.

fd will never contain an error code; it's always a pointer value. When that pointer is NULL, it indicates an error and the error code is in errno. That's what you should be inspecting during error handling. To convert the integer errno into a useful message, something like strerror() will help.

As you discovered, inserting arbitrary text into a script can present serious issues. The simplest solution is to write the reminder's text to a separate file.

strcpy of optarg to text is unsafe and can overflow. You can use strncpy, but then must be careful to ensure that the string is always null-terminated. strlcpy is a simpler alternative, if available. However, the simplest alternative in this case is to not copy at all.

Not only do you not need to copy, you don't need to allocate either. The reminder's text has already been allocated storage during startup. It's in argv. The only thing you need to do is pass around the pointer. The default value has also been stored away in the executable's image and it's location can also be passed around.

You implied that you are no longer waiting in the parent, but since the code is still there, a couple of notes about it.

You should always check WIFEXITED before using WEXITSTATUS (as you did with WIFSIGNALED before using WTERMSIG). An implementation is not forbidden from overloading bits for signal and status information (though I don't know if any implementation actually does so).

For portability and readability (especially for readability), it's a far better choice to use the macros in signal.h. Instead of 6, use SIGABRT. As far as I know, even though the kill(1) utility is required to recognize -6 as SIGABRT, nothing requires the kill(2) system call implementation to equate 6 with SIGABRT (although it almost certainly does).

Regarding your interprocess communication question, your pid file idea seems perfectly reasonable.

Regards,
Alister
This User Gave Thanks to alister For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

shell programming for process?

If I want to write program that spread the work to its child process so that each process compute some task what should I do? The objective of my program is to fill in the table which (10*10) in dimension and each column is filled with the fibonacci value of i+j (i mean current row and j mean... (1 Reply)
Discussion started by: robocup
1 Replies

2. UNIX for Dummies Questions & Answers

Multi User Multi Task

Dear Experts Why we always hear that unix operating system is Multi User and Multi task. What does these two means. I have looked at some books and documents but couldn't find aclear explenation. Can we say Windows operating system is also multi user and multi task?? Thanks for your help in... (6 Replies)
Discussion started by: Reza Nazarian
6 Replies

3. Programming

message queues and multi-process

Hi, Am supposed to use message queues to send and receive messages between the processes. when i was working on that i realised that the message qid and the message queue related data should be maintained in a shared memory so that it can be accessed by all the processes. Could anybody refer... (10 Replies)
Discussion started by: rvan
10 Replies

4. Programming

Redirect Output Multi-Process

Hi, I'm trying to compile the following code: /************** Begin <test.c> ***************/ /* * Compiled with: gcc -Wall -o test test.c */ #include <stdio.h> #include <unistd.h> int main(void) { printf("I'm process %d, son of %d \n", getpid(), getppid()); printf("Hello \n");... (3 Replies)
Discussion started by: djodjo
3 Replies

5. Programming

Redirect Standard Output Multi-Process

Hi, I'm trying to compile the following code: /************** Begin <test.c> ***************/ /* * Compiled with: gcc -Wall -o test test.c */ #include <stdio.h> #include <unistd.h> int main(void) { printf("I'm process %d, son of %d \n", getpid(), getppid()); ... (5 Replies)
Discussion started by: djodjo
5 Replies

6. High Performance Computing

What is it about OpenMosix that supports multi-process applications?

I read that 'Any single program that can run as multiple processes can benefit from OpenMosix: "The GIMP" photo editor and the "kandel" fractal generator are known to do this. Are there other load-balancing clusters that do support multi-process applications? (1 Reply)
Discussion started by: Advice Pro
1 Replies

7. Shell Programming and Scripting

Multi thread shell programming

I have a unix directory where a million of small text files getting accumulated every week. As of now there is a shell batch program in place which merges all the files in this directory into a single file and ftp to other system. Previously the volume of the files would be around 1 lakh... (2 Replies)
Discussion started by: vk39221
2 Replies

8. Shell Programming and Scripting

How to substract selective values in multi row, multi column file (using awk or sed?)

Hi, I have a problem where I need to make this input: nameRow1a,text1a,text2a,floatValue1a,FloatValue2a,...,floatValue140a nameRow1b,text1b,text2b,floatValue1b,FloatValue2b,...,floatValue140b look like this output: nameRow1a,text1b,text2a,(floatValue1a - floatValue1b),(floatValue2a -... (4 Replies)
Discussion started by: nricardo
4 Replies

9. Programming

Multi head/multi window hello world

I am trying to write a large X app. I have successfully modified my xorg.conf to setup 4 monitors on an NVIDIA Quatro5200. I am trying to modify a simple hello world application to open a window on three of the four monitors. depending on the changes to loop the window creation section and event... (2 Replies)
Discussion started by: advorak
2 Replies

10. Shell Programming and Scripting

Use the get and post method in the bash ( multi process)?

hi I want to call a lot of links with the post method What to do to speed it up?? ####This method is slow #!/bin/bash func2() { index1=0 while read line ; do index1=$(($index1+1)) url=$line done < tmp/url1.txt } (10 Replies)
Discussion started by: mnnn
10 Replies
learn(1)						      General Commands Manual							  learn(1)

NAME
learn - Provides computer-aided instruction for the C shell SYNOPSIS
learn [-directory] [subject] [lesson] The learn command provides computer-aided instruction courses and practice in the use of Tru64 UNIX. OPTIONS
Allows you to exercise a script in a nonstandard place. DESCRIPTION
To get started, enter learn; if this is the first time that you are invoking the learn command, you are guided through a series of ques- tions to determine what type of instruction you want to receive. If you have used learn before and left your last session without completing a subject, the program uses information in $HOME/.learnrc to start you up in the same place you left off. To bypass questions, enter a subject or lesson. In order to enter a lesson, you must know the lesson number that you received in a previ- ous learn command session. If you do not know the lesson number, enter the lesson number as a subject. The learn command searches for the first lesson containing the subject you specified. If the lesson is a - (dash), learn prompts for each lesson; this is useful for debug- ging. You can specify the following subjects: files editor vi morefiles macros eqn C SUBCOMMANDS
There are a few special commands. The bye command terminates a learn session, and the where command tells you of your progress (where m tells you more.) The again command redisplays the text of the lesson and again lesson lets you review lesson. The hint command prints the last part of the lesson script used to evaluate a response, while hint m prints the entire lesson script. This is useful for debugging lessons and might possibly give you an idea about what is expected. EXAMPLES
To take the online lesson about files, enter: learn files You are then prompted for further input. FILES
Playpen directories. Start-up information. SEE ALSO
Commands: csh(1), ex(1) learn(1)
All times are GMT -4. The time now is 10:43 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy