Solved

diff command

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

On Demand Webinar: Networking for the Cloud Era

Ready to improve network connectivity? Watch this webinar to learn how SD-WANs and a one-click instant connect tool can boost provisions, deployment, and management of your cloud connection.

Question has a verified solution.

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

Attention: This article will no longer be maintained. If you have any questions, please feel free to mail me. jgh@FreeBSD.org Please see http://www.freebsd.org/doc/en_US.ISO8859-1/articles/freebsd-update-server/ for the updated article. It is avail…
Every server (virtual or physical) needs a console: and the console can be provided through hardware directly connected, software for remote connections, local connections, through a KVM, etc. This document explains the different types of consol…
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.:
In a previous video, we went over how to export a DynamoDB table into Amazon S3.  In this video, we show how to load the export from S3 into a DynamoDB table.

691 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