Visit Our UNIX and Linux User Community


A Program Which Generates a Script Which Kills It


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users A Program Which Generates a Script Which Kills It
# 1  
Old 05-25-2011
A Program Which Generates a Script Which Kills It

I have a C++ program, running on Fedora Linux, which has to be able to update itself to a new version, which it can obtain from a server. The way I do this is to have it create a shell script which kills it (the parent process), uninstalls it, downloads the new version (actually it does this first), installs the new version, starts the new version in the background, and deletes itself (the shell script file). I create and run the shell script from the parent program by issuing system commands. I have done this successfully both with system() and popen(). Here is an example:

int i = system("cd /tmp;/tmp/LTUpdateVersion &");

where UpdateVersion is the generated shell script. Here is the problem. Once the parent process is killed, any command in the script which would normally show progress on the screen, such as untarring files, or any echo comands, produce an error message like, "Write error: broken pipe."

How can I generate a shell script from a running process, which then kills the process, but is still able to echo messages to the screen?

Thanks.
# 2  
Old 05-25-2011
Don't spawn a shell that kills you, just write(), close(), chmod() and execvp() the shell script, giving it the parent process to run the shell. Make sure the script starts with an accurate #! line per man execvp.

When the shell script gets to running the equivalent executable, it should 'exec' the new executable and so stop running, starting the new executable in that same process.

Previous Thread | Next Thread
Test Your Knowledge in Computers #930
Difficulty: Easy
In computing, an epoch is a date and time from which a computer measures determines the release date of the operating system.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Running a script on remote server kills my login session

Hi there, I'm trying to run a script remotely on a server in a particular directory named after hostname which already exists, my login session gets killed as soon as I run the below command. Not sure what is wrong, is there a better way to do it ? Note: I can also use nohup command to run... (14 Replies)
Discussion started by: mbak
14 Replies

2. Shell Programming and Scripting

Need to write a shell script that starts one, then kills it, then starts another?

This is on a CentOS box, I have two scripts that need to run in order. I want to write a shell script that calls the first script, lets it run and then terminates it after a certain number of hours (that I specify of course), and then calls the second script (they can't run simultaneously) which... (3 Replies)
Discussion started by: btramer
3 Replies

3. UNIX for Dummies Questions & Answers

Script that automatically generates HTML

hi I have a script with HTML code and am currently generating the html page everytime using genWebsite.sh > startPage.html Is it possible to have a loop at the begining of the script to run this command every minute so an updated HTML page is displayed or could someone suggest an alternative... (2 Replies)
Discussion started by: scriptnewbie
2 Replies

4. Shell Programming and Scripting

A script that kills previous instances of itself upon running not killing child processes

I'm likely going to explain this clumsily, so apologies in advance: I have the following script: #!/bin/bash pidPrefix="logGen" checkPrime () { if /sbin/ifconfig eth0:0|/bin/grep -wq inet;then isPrime=1;else isPrime=0;fi } killScript () { /usr/bin/find /var/run -name... (4 Replies)
Discussion started by: DeCoTwc
4 Replies

5. Solaris

How to find out the script which generates the file in solaris/unix ?

Hi A file is generated/created/modified during installation (or) execution of a script. vice versa..How to find out which script is responsible for creating/modifying a file. Example:- ....An existing file ( hosts.ulcm ), this file is created or modified by running a script ( may be... (1 Reply)
Discussion started by: frintocf
1 Replies

6. Shell Programming and Scripting

Script to Send Email to a user when an admin kills process

Can anyone create or give me a script that I can use to email a user automatically when I kill one of their processes? Or Can you give me a script to allow me to email a user (entering email manually) when a process is killed? Like showing what the PID was and a reason the admin killed it? Is... (2 Replies)
Discussion started by: JoeGazz84
2 Replies

7. Shell Programming and Scripting

perl script for generates a report for backup times

Hi all, we do have daily oracle database backups and i need to generate report of each database start point and end point we are using netapp snapshot(filer level) for backups. all backups logs will be come in one directory /u01/app/oracle/backup/hostname/log/* here... (7 Replies)
Discussion started by: prakashdba2010
7 Replies

8. Shell Programming and Scripting

Script, child kills parent

Hello everyone, I'm trying to write a script, i would like to say the child kills the parent, how would i do that? (2 Replies)
Discussion started by: jessy21
2 Replies

9. UNIX for Dummies Questions & Answers

Script to open program and send/execute command in program

Hi, i want to write a script that executes a program (exec?) . this program then requires a filename as input. how do i give it this input in the script so the program will be complete run and close by the script. e.g. exec prog.exe program then asks for filename "enter filename:"... (1 Reply)
Discussion started by: tuathan
1 Replies

10. Shell Programming and Scripting

How to get rid of message when script kills process it started?

When I run the following script I get the following error message whcih I would like to suppress when the kill is issued: ./kill.sh: line 13: 31854 Killed nc -l -p 12345 Script: #!/bin/bash echo running nc in the background nc -l -p 12345 & PID=$! echo nc pid: $PID ... (1 Reply)
Discussion started by: cmarkle
1 Replies

Featured Tech Videos