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
next prev parent 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.