All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mateus Interciso <p.zarnick@gmail.com>
To: linux-c-programming@vger.kernel.org
Subject: Re: programming using system calls
Date: Tue, 31 Jul 2007 14:13:05 +0000 (UTC)	[thread overview]
Message-ID: <f8ng1g$ios$1@sea.gmane.org> (raw)
In-Reply-To: 192840a00707310700l2536f183s66e05a6c9b072fd3@mail.gmail.com

On Tue, 31 Jul 2007 18:00:03 +0400,
Андрій Мішковський wrote:

> Hi, Mateus.
> Maybe it looks rude, but i want to correct you: fread, feof, fopen are
> _not_ system calls, as i remember. Your example is correct, but it makes
> no use of system calls. Your code is pure ISO C. :)
> Considering this, the program should look like this:
> 
> #include <unistd.h> /*read(), close()*/ #include <fcntl.h> /*open()*/
> #include <stdio.h> /*fprintf()*/
> #include <sys/types.h> /**/
> #include <errno.h> /* errno*/
> #include <string.h> /* strerror(), memset()*/
> 
> int
> main(int argc, char **argv)
> {
> 	int fd; /*file descriptor*/
> 	char buf[BUFSIZ]; /*buffer for reading data*/ int bytes_read = -1;
> 	/*bytes, already read from file*/
> 	
> 	if (argc != 2)
> 	{
> 		fprintf(stderr, "Usage: %s <file>\n", argv[0]); return 1;
> 	}
> 	
> 	fd = open (argv[1], O_RDONLY);
> 	if (fd == -1)
> 	{
> 		fprintf(stderr, "%s: open() failed. Reason: %s", argv[0],
> 		strerror(errno)); return 1;
> 	}
> 	
> 	while (bytes_read != 0)
> 	{
> 		bytes_read = read(fd, buf, BUFSIZ);
> 		if (bytes_read == -1)
> 		{
> 			fprintf(stderr, "%s: read() failed. Reason: %s", 
argv[0],
> 			strerror(errno)); close(fd);
> 			return 1;
> 		}
> 		fprintf(stdout, "%s", buf);
> 		memset(buf, 0, BUFSIZ);
> 	}
> 	
> 	close(fd);
> 	
> 	return 0;
> }
> 
> 2007/7/31, Mateus Interciso <p.zarnick@gmail.com>:
>> On Tue, 31 Jul 2007 04:27:13 -0700, nisa wrote:
>>
>> > hi,
>> > i am quite new to programming using system calls and would like a
>> > basic idea regarding the usage of system calls. i would like
>> > assistance in the following area of c programming in linux: 1.how to
>> > open a text file ,read data and print the data on console using
>> > system calls
>> > 2.create a text file and write some data 3.read data from a file and
>> > append that data to another file using lseek() 4.creation of a parent
>> > and child process using fork()
>>
>> Well, just to not let you in blank, here is a VERY simple file that
>> reads a text file, and output it to the screen
>>
>> #include <stdio.h>  //standard IO
>> #include <stdlib.h> //for reading files #include <string.h> //for
>> memset
>> #include <errno.h>  //for errno
>> int main(int argc, char *argv[]){
>>   FILE *fp = NULL;
>>   char ch[1];
>>
>>   if(argc!=2){
>>     fprintf(stderr,"Usage:%s <file>\n",argv[0]); return 1;
>>   }
>>   memset(ch,'\0',sizeof(char)*1);
>>   if((fp=fopen(argv[1],"r"))==NULL){
>>     perror("fopen");
>>     return errno;
>>   }
>>   while(feof(fp)==0){
>>     if( (fread(ch,sizeof(char),1,fp)==0) && (feof(fp)==0) ){
>>       perror("fread");
>>       fclose(fp);
>>       memset(ch,'\0',sizeof(char)*1);
>>       return errno;
>>     }
>>     fprintf(stdout,"%c",ch[0]);
>>   }
>>   fclose(fp);
>>   memset(ch,'\0',sizeof(char)*1);
>>   return 0;
>> }
>>
>> Also, as it was stated before, use the man pages. If you don't have a
>> Linux box, then google will be your friend for this. In this example,
>> you would need, the man pages for fopen(),fread() and feof().
>>
>> Good luck.
>>
>> -
>> To unsubscribe from this list: send the line "unsubscribe
>> linux-c-programming" in the body of a message to
>> majordomo@vger.kernel.org More majordomo info at 
>> http://vger.kernel.org/majordomo-info.html
>>

You are absolutly right, I'm terrible sorry...It's just that it has been 
so long since I haven't used open(), read(), close(), that I must have 
gone crazy, I'm terribly sorry for this.

Mateus

-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2007-07-31 14:13 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-31 11:27 programming using system calls nisa
2007-07-31 11:51 ` spiro harvey
     [not found] ` <192840a00707310451s6a1b369eg632be924c8de1003@mail.gmail.com>
2007-07-31 11:53   ` Андрій Мішковський
2007-07-31 12:00 ` Mateus Interciso
2007-07-31 14:00   ` Андрій Мішковський
2007-07-31 14:13     ` Mateus Interciso [this message]
2007-08-10 14:53 ` Li YanBo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='f8ng1g$ios$1@sea.gmane.org' \
    --to=p.zarnick@gmail.com \
    --cc=linux-c-programming@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.