Solved

diff command

Posted on 2004-04-05
3
642 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
  • 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

Active Directory Webinar

We all know we need to protect and secure our privileges, but where to start? Join Experts Exchange and ManageEngine on Tuesday, April 11, 2017 10:00 AM PDT to learn how to track and secure privileged users in Active Directory.

Question has a verified solution.

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

Suggested Solutions

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…
A metadevice consists of one or more devices (slices). It can be expanded by adding slices. Then, it can be grown to fill a larger space while the file system is in use. However, not all UNIX file systems (UFS) can be expanded this way. The conca…
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…
Learn how to find files with the shell using the find and locate commands. Use locate to find a needle in a haystack.: With locate, check if the file still exists.: Use find to get the actual location of the file.:

832 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