Solved

diff command

Posted on 2004-04-05
3
644 Views
Last Modified: 2010-04-21
I am comparing 2 files using diff

Diff –s filename1 filename2

This returns ‘files filename1 and filename2 are identical’

I am doing this through a c program using

sprintf(command, "diff  -s filename1 filename2");
system(command);
 
I want to check the return value and display a message saying the files were identical or not

Preferably using exit(0); if possible

can anyone help

thanks
0
Comment
Question by:plennon
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 45

Expert Comment

by:sunnycoder
ID: 10757508
Hi plennon,

use popen if you want to read in the results of diff ...

if all you want is return status of diff, then system returns exactly that

RETURN VALUE
       The value returned is -1 on error (e.g. fork failed),  and
       the  return  status of the command otherwise.  This latter
       return status is  in  the  format  specified  in  wait(2).
       Thus,  the  exit  code  of  the  command will be WEXITSTA­
       TUS(status).  In case /bin/sh could not be  executed,  the
       exit status will be that of a command that does exit(127).

       If the value of string is NULL, system()  returns  nonzero
       if the shell is available, and zero if not.

       system()  does  not  affect  the  wait status of any other
       children.


Sunnycoder
0
 

Author Comment

by:plennon
ID: 10757596
it's how to get the return value that i can't figure out

in my c code i have

 sprintf(diffcommand, "diff -s filename1 filename2");
 system(diffcommand);

it produces the following message

"files filename1 and filename2 are identical"

i don't want this to be displayed i only want  to have an if statement that will display pass if they are identical (return value 0) or fail if not (return is nonzero)

it's actually the c code i'm looking for although i've posted this in the unix section

thanks
0
 
LVL 45

Accepted Solution

by:
sunnycoder earned 35 total points
ID: 10757631
sprintf(diffcommand, "diff -s filename1 filename2 > /dev/null");
int  ret =  system(diffcommand);

printf ( "system returned %d", WEXITSTATUS (ret ) );
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In tuning file systems on the Solaris Operating System, changing some parameters of a file system usually destroys the data on it. For instance, changing the cache segment block size in the volume of a T3 requires that you delete the existing volu…
My previous tech tip, Installing the Solaris OS From the Flash Archive On a Tape (http://www.experts-exchange.com/articles/OS/Unix/Solaris/Installing-the-Solaris-OS-From-the-Flash-Archive-on-a-Tape.html), discussed installing the Solaris Operating S…
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…

740 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question