From mboxrd@z Thu Jan 1 00:00:00 1970 From: "=?UTF-8?B?0JDQvdC00YDRltC5INCc0ZbRiNC60L7QstGB0YzQutC40Lk=?=" Subject: Re: programming using system calls Date: Tue, 31 Jul 2007 18:00:03 +0400 Message-ID: <192840a00707310700l2536f183s66e05a6c9b072fd3@mail.gmail.com> References: <11922382.post@talk.nabble.com> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Return-path: DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=FJ6Ndrp7ODMCj4kIu62+nKdcFk9iarnEuwJsBmG9K94gkliUM8aBJrBHdbWrcrvWj2EC7zCWQLZoMETKLwAfmTNaiSp643mChePBfCst97yTK+T8QPQPNtGWwf2Gs5jtgRp9csv/+OL5LMUUembEPQssSn8vmFCYntmMkBrWrbI= In-Reply-To: Content-Disposition: inline Sender: linux-c-programming-owner@vger.kernel.org List-Id: Content-Type: text/plain; charset="us-ascii" To: Mateus Interciso Cc: linux-c-programming@vger.kernel.org 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 /*read(), close()*/ #include /*open()*/ #include /*fprintf()*/ #include /**/ #include /* errno*/ #include /* 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 \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 : > 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 //standard IO > #include //for reading files > #include //for memset > #include //for errno > int main(int argc, char *argv[]){ > FILE *fp = NULL; > char ch[1]; > > if(argc!=2){ > fprintf(stderr,"Usage:%s \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 > -- Wbr, Andriy Mishkovskyy. He's got a heart of a little child, and he keeps it in a jar on his desk.