Skip to contentSkip to conversation

programming using system calls

DISCUSSION nisa 5 participants 7 messages Jul 31, 2007 – Aug 10, 2007 1 message not in the archive

lore
Share & tools
lore

nisa

author
#0 lore raw

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()

Signature · 2 lines
View this message in context: http://www.nabble.com/programming-using-system-calls-tf4192448.html#a11922382
Sent from the linux-c-programming mailing list archive at Nabble.com.
#1 lore raw

this sounds awfully like homework.

Quoted 20 lines · nisa

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()

--
View this message in context: http://www.nabble.com/programming-using-system-calls-tf4192448.html#a11922382
Sent from the linux-c-programming mailing list archive at Nabble.com.

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

A message that is not in the archive (sent off-list or not yet received): [email protected]

#3 lore raw

2007/7/31, nisa <[email protected]>:

Quoted 11 lines

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()

Quoted 9 lines

--
View this message in context: http://www.nabble.com/programming-using-system-calls-tf4192448.html#a11922382
Sent from the linux-c-programming mailing list archive at Nabble.com.

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

Well, as far as i know, man pages are a good source of knowledge. Wait, i'll check that. Hm... Yeah, they are. :)
Everything that you are looking for is situated in the second section of man pages.

Signature · 3 lines
Wbr, Andriy Mishkovskyy.

He's got a heart of a little child, and he keeps it in a jar on his desk.
#4 lore raw
In reply to nisa
Quoted 9 lines · nisa

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.

#5 lore raw

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 <[email protected]>:

Quoted 58 lines · nisa
Quoted 10 lines

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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

Signature · 3 lines
Wbr, Andriy Mishkovskyy.

He's got a heart of a little child, and he keeps it in a jar on his desk.
#6 lore raw
Quoted 29 lines · Андрій Мішковський

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;
Quoted 8 lines
	}
	
	while (bytes_read != 0)
	{
		bytes_read = read(fd, buf, BUFSIZ);
		if (bytes_read == -1)
		{
			fprintf(stderr, "%s: read() failed. Reason: %s", 

argv[0],

Quoted 12 lines
			strerror(errno)); close(fd);
			return 1;
		}
		fprintf(stdout, "%s", buf);
		memset(buf, 0, BUFSIZ);
	}
	
	close(fd);
	
	return 0;
}
Quoted 58 lines

2007/7/31, Mateus Interciso <[email protected]>:

Quoted 57 lines · nisa
Quoted 10 lines

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 [email protected] 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#7 lore raw
In reply to nisa
Quoted 11 lines · nisa

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()

Quoted 9 lines

--
View this message in context: http://www.nabble.com/programming-using-system-calls-tf4192448.html#a11922382
Sent from the linux-c-programming mailing list archive at Nabble.com.

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

Recommend the Unix&&Linux system&&C program bible: Advanced Programming in the UNIX Environment author:W. Richard Stevens

lyb