Professional Documents
Culture Documents
Program:
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<unistd.h>
int main()
{
int pfds[2];
char buf[20];
if(pipe(pfds)==-1)
{
perror("pipes");
exit(1);
}
printf("wirting to file descriptor %d\n",pfds[1]);
write(pfds[1],"ashok",6);
printf("reading from the file descriptor %d\n",pfds[0]);
read(pfds[0],buf,6);
printf("read data is %s",buf);
}
ouput:
Program:
producer.c
#include<stdio.h>
#include<sys/stat.h>
#include<string.h>
#include<unistd.h>
#include<fcntl.h>
#include<errno.h>
#include<stdlib.h>
void main()
int num,fd;
char s[300];
mknod(FIFO_NAME,S_IFIFO|0666,0);
fd=open(FIFO_NAME,O_WRONLY);
while(gets(s),!feof(stdin))
if((num=write(fd,s,strlen(s)))==-1)
perror("write");
else
OUTPUT:
hi hello
speak:wrote 8 bytes
Consumer.c
#include<stdio.h>
#include<sys/stat.h>
#include<unistd.h>
#include<sys/types.h>
#include<fcntl.h>
#include<errno.h>
void main()
char s[300];
int num,fd;
mknod(FIFO_NAME,S_IFIFO|0666,0);
fd=open(FIFO_NAME,O_RDONLY);
printf("got a writer\n");
do
if((num=read(fd,s,300))==-1)
perror("read");
else
s[num]='\0';
printf("read %s ",s);
}while(num>0);
OUTPUT:
got a writer
read hi hello
Program:
/*tcpserver.c*/
#include<stdio.h>
#include<unistd.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<string.h>
#define MAXLINE 5544
int sockfd,connfd,childpid,n;
int len;
char mesg[1024];
port=(unsigned short)atoi(argv[1]);
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
perror("socket");
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(port);
if((bind(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr)))<0)
perror("bind");
for(;;)
len=sizeof(cliaddr);
close(sockfd);*/
n=write(sockfd,mesg,MAXLINE);
read(sockfd,mesg,MAXLINE);
}
OUTPUT:
/home/ashok/~ cc tcpserver.c
/*tcpclient.c*/
#include<stdio.h>
#include<unistd.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
#include<sys/types.h>
int sockfd,n;
int len;
char mesg[1024];
port=(unsigned short)atoi(argv[1]);
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
perror("socket");
servaddr.sin_family=AF_INET;
inet_pton(AF_INET,argv[2],&servaddr.sin_addr);
len=sizeof(servaddr);
while(fgets(mesg,MAXLINE,stdin)!=NULL)
{
write(sockfd,mesg,MAXLINE);
read(sockfd,mesg,MAXLINE);
printf("\n %s",mesg);
hi
hi
hello
hello
Program:
/*udp server.c*/
#include<unistd.h>
#include<sys/socket.h>
#include<stdio.h>
#include<string.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<errno.h>
#define MAXLINE 5555
void main(int argc,char *argv[])
{
int sockfd,n;
unsigned short port;
socklen_t len;
char mesg[1024];
struct sockaddr_in servaddr,cliaddr;
port=(unsigned short)atoi(argv[1]);
if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0) /* creation of sockets*/
printf("error in socket creation");
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(port);
len=sizeof(servaddr);
if(bind(sockfd,(struct sockaddr *)&servaddr,len)<0) /* binding to socket address */
perror("\nbind");
for(;;) /* infinite loop */
{
len=sizeof(cliaddr);
n=recvfrom(sockfd,&mesg,MAXLINE,0,(struct sockaddr *)&cliaddr,&len);
sendto(sockfd,&mesg,n,0,(struct sockaddr *)&cliaddr,len);
}
}
output:
/home/ashok/~ cc udpserver.c
/home/ashok/~ ./a.out 4455
/*udpclient.c*/
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<string.h>
#include<netinet/in.h>
#include<errno.h>
#define MAXLINE 5566
int sockfd,n,len;
char mesg[1024];
unsigned short port;
char sendline[MAXLINE],recvline[MAXLINE];
struct sockaddr_in servaddr;
if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0) /* creating sockets */
{
perror("socket");
}
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
port=(unsigned short)atoi(argv[1]);
servaddr.sin_port=htons(port);
if((inet_pton(AF_INET,argv[2],&servaddr.sin_addr))<0)
{
perror("inet_pton");
}
len=sizeof(servaddr);
while(fgets(sendline,MAXLINE,stdin)!=NULL)
{
printf("\n %s",recvline);
}
}
output:
/home/ashok/~ cc udpclient.c
/home/ashok/~ ./a.out 4455 127.0.0.1
hi
hi
hello
hello
20. AIM: Write a program to demonstrate the use of Execl Family System Calls or functions.
1. execl()
2. execv()
3. execle()
4. execve()
5. execlp()
6. execvp()
Program:
#include<stdio.h>
#include<unistd.h>
void main()
{
printf("\n Before execl() function");
execl("/bin/ls","ls","-l",NULL);
Output:
#include<stdio.h>
#include<unistd.h>
void main()
{
char *a[3];
a[0]="ls"
a[1]="-l"
a[2]=0;
printf("\n Before execv() function");
execv("/bin/ls",a);
Output:
NOTE: The only difference between execl() and execv() system calls is while the first one takes arguments as a list,
the second system call takes arguments as vector.
#include<stdio.h>
#include<unistd.h>
void main()
{
printf("\n Before execlp() function");
execlp("ls","ls","-l",0);
Output:
#include<stdio.h>
#include<unistd.h>
void main()
{
char *a[3];
a[0]="ls"
a[1]="-l"
a[2]=0;
printf("\n Before execlp() function");
execlp("ls",a);
Output:
#include<stdio.h>
#include<unistd.h>
extern char **environ; /* environ is a predefined extern variable */
void main()
{
int i;
for(i=0;environ[i];i++)
{
printf("%s\n",environ[i]);
}
}
Ouput:
execute the above code and it will display all the environment variables available in a process
#include<stdio.h>
#include<unistd.h.
void main()
{
char *x[3];
int i;
x[0]="abc=/tmp"; /*environment variables */
x[1]="xyz=/bin"; /*environment variables*/
x[2]=0;
if(fork()==0)
{
execle("./environdemo", "environdemo",(char *)0, x); /* supplying environment
variables(x) to execle() system call*/
}
wait(&i);
}
Output;
/home/anil/~$ cc excledemo.c
/homr/anil/~$ ./a.out
/home/anil/~$
#include<stdio.h>
#include<unistd.h.
void main()
{
char *x[3],*y[2]; /as we need to supply the arguments as a vector we used extra pointer variable*/
int i;
x[0]="abc=/tmp"; /*environment variables */
x[1]="xyz=/bin"; /*environment variables*/
x[2]=0;
y[0]="environdemo";
y[1]=0;
if(fork()==0)
{
execve("./environdemo", y, x); /* supplying environment variables(x) to
execve() system call, y is vector containing the arguments to be supplied*/
}
wait(&i);
}
Output;
/home/anil/~$ cc excvedemo.c
/homr/anil/~$ ./a.out
/home/anil/~$
/home/anil/~$ cc environdemo.c
/home/anil/~$ ./a.out
now it display environment variables like /tmp and /bin environment variables but not all environment variables.