Home
| Calendar
| Mail Lists
| List Archives
| Desktop SIG
| Hardware Hacking SIG
Wiki | Flickr | PicasaWeb | Video | Maps & Directions | Installfests | Keysignings Linux Cafe | Meeting Notes | Linux Links | Bling | About BLU |
thanks guys. I used the background function and it works. As for the fork(), I'm not sure how do I use it and the exec() function. any advise? thanks again ----- Original Message ----- From: "Jerry Feldman" <gaf at blu.org> To: "New York Linux User Group (z)" <nylug-talk at nylug.org>; "Boston Linux Mail List - z" <discuss at Blu.Org>; "zoqix" <zoqix at yahoo.com> Sent: Thursday, February 01, 2001 4:43 AM Subject: Re: Perform other functions while untarring file using "system" command in a C program > The system(2) function by defnition waits until the command completes. > As John mentioned, you could use the popen() function or you could do a > fork()/exec() yourself. Also note that the GNU tar command with the z > option forks a gzip(or gunzip) which then pipes the output file to tar. > > As a quick example: > /* signal handler */ > void sighand(int sig) > { > if (sig == SIGCHLD) { > finished = 1; > } > } > pid_t chld = fork(); > finished = 0; > set up signal to catch the SIGCHLD signal; > > if (chld == 0) { > exec(tar command); > return 0; /* or exit() */ > } else if (chld == -1) { > perror("fork"); > exit(-1); > } else { /* parent */ > do { > /* calculate percent */ > printf("%d %% Completed", percent); > } while(! finished); > } > /* done */ > > > > On 31 Jan 2001, at 13:04, John Abreau wrote: > > > On Wed, 31 Jan 2001, zoqix wrote: > > > > > Hi all, > > > I'm using the "system" command to do an untarring of a file.tar.gz file > > > in my C program. However, I would like to display some status > > > information like "10 % Completed". I've written some code to calculate > > > the percentage. However, the code could only be runned after the > > > "system" command finished untarring my zipped file. e.g. > > > > > > system("tar zxf file.tar.gz"); > > > do > > > { > > > printf("%d %% Completed", percent); > > > }while (!finished) > > > > > > Therefore, the printf will always print 100 % Completed. Is there any > > > way to let the unzipping continue at background and return to print the > > > completion status? > > > > > > > A look through the info files for GNU tar shows the following: > > > > `--checkpoint' > > This option directs `tar' to print periodic checkpoint > > messages as it reads through the archive. Its intended > > for when you want a visual indication that `tar' is still > > running, but don't want to see `--verbose' output. > > > > It doesn't give a percentage, and it's not immediately clear what the > > number it does give actually represents, but it's probably a good starting > > point. > > > > To use its output, you'd have to replace the "system" call with a call to > > popen that reads from the stdout of the "tar" process. You'd also want to > > change the buffering of data in the pipe so you can immediately read the > > output from tar at the newline, rather than waiting for a complete block > > to be buffered. > > > > -- > > John Abreau / Executive Director, Boston Linux & Unix > > ICQ#28611923 / AIM abreauj / Email jabr at blu.org > > > > - > > Subcription/unsubscription/info requests: send e-mail with > > "subscribe", "unsubscribe", or "info" on the first line of the > > message body to discuss-request at blu.org (Subject line is ignored). > > > Jerry Feldman <gaf at blu.org> > Associate Director > Boston Linux and Unix user group > http://www.blu.org > - > Subcription/unsubscription/info requests: send e-mail with > "subscribe", "unsubscribe", or "info" on the first line of the > message body to discuss-request at blu.org (Subject line is ignored). - Subcription/unsubscription/info requests: send e-mail with "subscribe", "unsubscribe", or "info" on the first line of the message body to discuss-request at blu.org (Subject line is ignored).
BLU is a member of BostonUserGroups | |
We also thank MIT for the use of their facilities. |