Write in C the following Unix commands using system calls A). cat B). ls C). mv
AIM:
Implement in C the following Unix commands using system calls
A). cat B). ls C). mv
Program:
A) cat
#include<sys/types.h> #include<sys/stat.h> #include<stdio.h> #include<fcntl.h> main( int argc,char *argv[3] ) { int fd,i; char buf[2]; fd=open(argv[1],O_RDONLY,0777); if(fd==-argc) { printf("file open error"); } else { while((i=read(fd,buf,1))>0) { printf("%c",buf[0]); } close(fd); } }
Output:
student@ubuntu:~$gcc –o prgcat.out prgcat.c student@ubuntu:~$cat > ff hello hai student@ubuntu:~$./prgcat.out ff hello hai
B) ls
#include <sys/types.h> #include <sys/dir.h> #include <sys/param.h> #include <stdio.h> #define FALSE 0 #define TRUE 1 extern int alphasort(); char pathname[MAXPATHLEN]; main() { int count,i; struct dirent **files; int file_select(); if (getwd(pathname) == NULL ) { printf("Error getting pathn"); exit(0); } printf("Current Working Directory = %sn",pathname); count = scandir(pathname, &files, file_select, alphasort); if (count <= 0) { printf("No files in this directoryn"); exit(0); } printf("Number of files = %dn",count); for (i=1;i<count 1; i) printf("%s \n",files[i-1]->d_name); } int file_select(struct direct *entry) { if ((strcmp(entry->d_name, ".") == 0) ||(strcmp(entry->d_name, "..") == 0)) return (FALSE); else return (TRUE); }
Output:
Student@ubuntu:~$ gcc list.c
Student@ubuntu:~$ ./a.out
Current working directory=/home/student/
Number of files=57
C) mv
#include<sys/types.h>
#include<sys/stat.h>
#include<stdio.h>
#include<fcntl.h>
main( int argc,char *argv[] )
{
int i,fd1,fd2;
char *file1,*file2,buf[2];
file1=argv[1];
file2=argv[2];
printf("file1=%s file2=%s",file1,file2);
fd1=open(file1,O_RDONLY,0777);
fd2=creat(file2,0777);
while(i=read(fd1,buf,1)>0)
write(fd2,buf,1);
remove(file1);
close(fd1);
close(fd2);
}
Output:
student@ubuntu:~$gcc –o mvp.out mvp.c student@ubuntu:~$cat > ff hello hai student@ubuntu:~$./mvp.out ff ff1 student@ubuntu:~$cat ff cat:ff:No such file or directory student@ubuntu:~$cat ff1 hello hai
-
UpdatedOct 23, 2014
-
Views72,380
You May Like
Write a Shell script to find factorial of a given integer.
Write in C the following Unix commands using system calls A). cat B). ls C). mv
Write a Shell script that displays list of all the files in the current directory to which the user has read, Write and execute permissions.
Write a Shell script that accepts a filename, starting and ending line numbers as arguments and displays all the lines between the given line numbers.
Write a C program to emulate the Unix ls-l command.
Write a Shell script to list all of the directory files in a directory.