Вы находитесь на странице: 1из 45

LINUX

#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<stdlib.h>
#include<sys/stat.h>
#include<unistd.h>
#include<signal.h>
#include<fcntl.h>
#include<dirent.h>
#include<sys/ipc.h>
#include<sys/msg.h>
p1.c
#include<stdio.h>
main()
{
int i=10,j=20,k;
printf("hello world \n");
k=sum(i,j);
printf("k=%d\n",k);
k=mul(i,j);
printf("k=%d\n",k);
}
mul.c
#include<stdio.h>
int mul(int i,int j)
{
return(i*j);
}
print.c
#include<stdio.h>
void print(char *p)
{
printf("hai....\n");
}
sum.c
#include<stdio.h>
int sum(int i,int j)
{
return(i+j);
}
cc -c sum.c
cc -c mul.c
cc -c printf.c
ar rcs libabc.a sum.o mul.o printf.o
ar t libabc.a

beground -program.c
#include<stdio.h>
main()
{
printf("hello.....\n");
printf("pid=%d ppid=%d\n",getpid(),getppid());
while(1);
// ./a.out &
// ps
// fg
// fg 1(jobid)
// ps -l
// kill -9 3375(process id)
}

//for run program in background;


//process are present in current terminal;
//bring background program in forground;
//perticular process move to for ground;
//current process;
//terminat process in backgroung;

1-program.c
#include<stdio.h>
main()
{
printf("hello.....\n");
printf("pid=%d ppid=%d\n",getpid(),getppid());
printf("before\n");
sleep(5);
printf("After...\n");
while(1);
// kill -19 1818(process id)
// kill -18 1818(process id)
// ./a.out &
// ps
// fg
// fg 1(jobid)
// ps -l
// kill -9 3375(process id)
}
program_2
#include<stdio.h>
#include<stdlib.h>
main()
{
printf("Hello....\n");
system("ls");
system("cd");
system("ps");
printf("hai....\n");
}

//push process
//resume process

//for run program in background;


//process are present in current terminal;
//bring background program in forground;
//perticular process move to for ground;
//current process;
//terminat process in backgroung;

1_long_jump
#include<stdio.h>
#include<setjmp.h>
void abc(void);
jmp_buf v;
main()
{
setjmp(v);
printf("hello....\n");
abc();
printf("hai.....\n");
}
void abc(void)
{
printf("in abc....\n");
longjmp(v,1);
printf("in abc after main");
}

2-find bug-longjump.c

#include<stdio.h>
#include<setjmp.h>
int sum(int,int);
int sub(int,int);
int mul(int,int);
int dive(int,int);
jmp_buf v;
main()
{
int n1,n2,op,ret,r;
printf("hello.....\n");
r=setjmp(v);
printf("r=%d\n",r);
if(r==3)
printf("multi......\n");
if(r==4)
printf("dive.....\n");
printf("Enter the number:");
scanf("%d%d",&n1,&n2);
printf("Enter op 1)sum 2)sub 3)mul 4)dive");
scanf("%d",&op);
if(op==1)
{
ret=sum(n1,n2);
printf("ret=%d\n",ret);
}
else if(op==2)
{
ret=sub(n1,n2);
printf("ret=%d\n",ret);
}
else if(op==3)
{
ret=mul(n1,n2);
printf("ret=%d\n",ret);
}
else if(op==4)
{
ret=dive(n1,n2);
printf("ret=%d\n",ret);
}
else
printf("unknown option\n");
}
int sum(int i,int j)

{
return(i+j);
}
int sub(int i,int j)
{
return(i-j);
}
int mul(int i,int j)
{
if(i==0 || j==0)
longjmp(v,1);
return(i*j);
}
int dive(int i,int j)
{
if(j==0)
longjmp(v,4);
return(i/j);
}

#include<stdio.h>
main()
{
printf("Hello....\n");
if(fork()==0)
system("./p1");
else
system("pwd");
}
1 _fork.c
#include<stdio.h>
main()
{
printf("Hello..\n");
fork();
fork();
printf("Hai....\n");
while(1);
}
// open terminal 2 ps -e for see pid
2 return-fork.c
#include<stdio.h>
main()
{
int ret;
printf("Hello....\n");
ret=fork();
if(ret=0)
{
printf("in child ret=%d\n",ret);
printf("in child PID=%d\n",getpid());
}
else
{
printf("in main ret=%d\n",ret);
}
while(1);
}

3. statements with fork


#include<stdio.h>
main()
{
int ret;
printf("1) Hello....\n");
//first display
if(fork()==0)
{
printf("2) in child 1\n");
//first child exicuit during parent exicuit.
if(fork()==0)
{
printf("3) in child 2 PID=%d\n",getpid());
}
else
{
printf("4) in child 1 PID=%d\n",getpid());
}
printf("5) end of child 1\n");
}
else //main parent
{
printf("6) in main PID=%d\n",getpid());
//first time given to parent
}
}
4--- parent _2 child
#include<stdio.h>
main()
{
int ret;
printf("1) Hello....\n");
//first display
if(fork()==0)
{
printf("2) child 1 PID=%d\n",getpid());
exicuit.
}
else //main second part
{
printf("3) starting in parent \n");
if(fork()==0)
{
printf("4) child 2 PID=%d\n",getpid());
}
else
{
printf("5) parent PID=%d\n",getpid());

//first time given parent after child

}
printf("6) in else part\n");
}
printf("7) last line\n ");
}

5-fork2.c
#include<stdio.h>
main()
{

//
}

int i=10;
{
if(fork()==0)
{
printf("in child i=%d\n",i);
}
else
{
i=400;
printf("in patent i=%d\n",i);
}
while(1);
}

//first time given to parent

1- for fork
#include<stdio.h>
main()
{
int i,j=0;
for(i=0;i<3;i++)
{
if(fork()==0)
printf("hello i=%d j=%d\n",i,j++);
else
;
}
}
2 for fork
#include<stdio.h>
main()
{
int i,j=0;
for(i=0;i<3;i++)
{
if(fork()==0)
printf("hello i=%d j=%d\n",i,j++); // parent-> child -> child-> child
else
break;
}
}
3 for fork
#include<stdio.h>
main()
{
int i,j=0;
for(i=0;i<3;i++)
{
if(fork()==0)
{
printf("hello i=%d j=%d\n",i,j++); // 1 parent,1) child,2) child,3) child;
break;
}
else
;
}
}

4- orphan
#include<stdio.h>
main()
{
if(fork()==0)
{
printf("PID=%d PPID=%d\n",getpid(),getppid());
sleep(10);
printf("PID=%d PPID=%d\n",getpid(),getppid());
}
else
sleep(5); // after 5 second parent process complet, but child process not complet
}

5-zombie
#include<stdio.h>
main()
{
if(fork()==0)
{
printf("PID=%d PPID=%d\n",getpid(),getppid());
sleep(10); //after 10 second child become died but not free from ram after 20 second
program terminat all process are free.
printf("PID=%d PPID=%d\n",getpid(),getppid());
}
else
sleep(20); // after 20 second parent process complet, but child process complet before 10
second
//open terminal 2 ps -e;
}
6 perror
#include<stdio.h>
main()
{
FILE *fp;
fp=fopen("data","r");
if(fp==0)
{
perror("fopen");
return;
}
printf("file is present\n");
}

1- exit
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
void abc(void)
{
printf("in abc....\n");
}
main()
{
atexit(abc);
sleep(10);
exit(0);
}
2-exit
#include<stdio.h>
main()
{
printf("Hello....\n");
//exit(0);
_exit(0);
}
3-exit wait
#include<stdio.h>
#include<stdlib.h>
main()
{
if(fork()==0)
{
printf("in child pid=%d\n",getpid());
sleep(10);
exit(1); //return 1 to parent
}
else
{
int s,r;
printf("in parent before wait\n");
r=wait(&s);
//for normal terminat r=0000 0001 0000 0000 = 256
//if we terminat with "kill -9 pid" r=0000 0000 0000 01001=9
//if stop
printf("in parent after wait s=%d r=%d\n",s,r);
}
//
while(1);
}

1-my-kill
#include<stdio.h>
//#include<sys/type.h>
#include<signal.h>
main(int argc,char **argv)
{
if(argc!=3)
{
printf("Enter as ./a.out SIG PID\n");
return;
}
//compail p1.c run in while(1);
//open terminal 2 compile "my_kill" program
run
"./a.out SIGNAL_NUMBER PID" PID of p1.c process.
//check terminal 1
kill(atoi(argv[2]),atoi(argv[1]));
perror("kill");
}
2 change signal
#include<stdio.h>
#include<signal.h>
void my_isr(int n)
{
printf("In isr....\n");
//
signal(SIGINT,SIG_DFL);

//remove comment only one time

}
main()
{
signal(SIGINT,my_isr);
while(1);
}

//change signal

3 -alarm
#include<stdio.h>
main()
{
printf("hello...\n");
alarm(10);
printf("Hi....\n");
while(1);
}

//after 10 second alarm signal generat and terminat program


//untill 10 second while loop exicuit

4 modify alarm
#include<stdio.h>
#include<signal.h>
void my_isr(int n)
{
printf("in isr signal num:%d......\n",n);
alarm(2); //after every 2 second alarm signal generat and function set alarm every time
}
main()
{
signal(SIGALRM,my_isr);
printf("hello...\n");
alarm(10);
//after 10 second alarm signal generat and terminat program
alarm(4);
//if new alarm declear old is remove
printf("Hi....\n");
while(1);
//untill 10 second while loop exicuit
}
5 return of alarm
#include<stdio.h>
#include<signal.h>
main()
{
int n;
printf("hello...\n");
n=alarm(10);
printf("1) n=%d\n",n);
sleep(3);
n=alarm(2);
printf("2) n=%d\n",n);
printf("hi...\n");
while(1);
}
p1.c
#include<stdio.h>
main()
{
printf("pid %d\n",getpid());
while(1);
}

//alarm set 10 and its previous value 0 store in n;


//sleep 3second
//when new alarm set previous alarm comes at 10-3=7

//after 2 second program terminat becoude of 2 second alarm

1- disable-signal
#include<stdio.h>
#include<signal.h>
void my_isr(int n)
{
printf("in isr.....\n");
signal(SIGINT,SIG_DFL);
signal(SIGQUIT,SIG_DFL);
}
main()
{
signal(SIGINT,SIG_IGN);
signal(SIGQUIT,SIG_IGN);
signal(SIGALRM,my_isr);
alarm(10);
while(1);
}
2_n time -after
#include<stdio.h>
#include<signal.h>
void my_isr(int n)
{
static int c1=0,c2=0;
if(n==2)
{
c1++;
if(c1==4)
signal(SIGINT,SIG_DFL);
}
if(n==3)
{
c2++;
if(c2==2)
signal(SIGQUIT,SIG_DFL);
}
}
main()
{
signal(2,my_isr);
signal(3,my_isr);
while(1);
}

3- sighup
#include<stdio.h>
#include<signal.h>
main()
{
printf("PID %d\n",getpid());
signal(SIGHUP,SIG_IGN);
// open oter terminal_2 type "ps -l"
//during running program closs terminal_1
//in terminal_2 "ps -l"
while(1);
}
4.child zombie
#include<stdio.h>
#include<signal.h>
void my_isr(int n)
{
printf("pid my_str:%d\n",getpid());
printf("in isr.....\n");
//wait(0);
}
main()
{
if(fork()==0)
{
printf("pid child:%d\n",getpid());
sleep(10);
}
else
{
printf("pid parent:%d\n",getpid());
signal(SIGCHLD,my_isr);
while(1);
}
}
5 limit process life
#include<stdio.h>
#include<signal.h>
void my_isr(int n)
{
raise(9); // signal 9 exicuit
}
main()
{
signal(14,my_isr);
//change alarm signal
alarm(5);
while(1);
}

6-current of signal
#include<stdio.h>
#include<signal.h>
main()
{
int num;
void (*p)(int);
signal(3,SIG_IGN);
printf("enter the signal number:");
scanf("%d",&num);
p=signal(num,SIG_IGN);
signal(num,p);
if(p==SIG_DFL)
printf("default.....\n");
else if(p==SIG_IGN)
printf("ignore....\n");
else
printf("user change....\n");
}
7- handle -2-signal
#include<stdio.h>
#include<signal.h>
void my_isr(int n)
{
printf("in isr.....\n");
sleep(10);
// during 10 second press 'ctrl'+'\'
// new signal intrups current signal 2;
printf("After aleep in isr....\n");
}
main()
{
signal(2,my_isr);
while(1);
}

1 signaction-place-signal
#include<stdio.h>
#include<signal.h>
void my_isr(int n)
{
printf("in_isr.....\n");
}
main()
{
struct sigaction v;
v.sa_handler=my_isr; //SIG_DFL SIG_IGN
sigemptyset(&v.sa_mask);
v.sa_flags=0;
sigaction(2,&v,0);
//change signal 2 like signal(2,my_isr);
while(1);
}
2 using signaction-ge-status
#include<stdio.h>
#include<signal.h>
main()
{
struct sigaction v;
int num;
signal(3,SIG_IGN);
printf("enter signal");
scanf("%d",&num);
sigaction(num,0,&v);
if(v.sa_handler==SIG_DFL)
printf("Default....\n");
else if(v.sa_handler==SIG_IGN)
printf("Ignore.....\n");
else
printf("my_isr\n");
}

3 flg-nocldstop
#include<stdio.h>
#include<signal.h>
void my_isr(int n)
{
printf("in_isr.....signal no=%d\n",n);
}
main()
{
if(fork()==0)
{
printf("child pid:%d",getpid());
while(1);
}
else
{
struct sigaction v;
v.sa_handler=my_isr; //SIG_DFL SIG_IGN
sigemptyset(&v.sa_mask);
v.sa_flags=0;
//v.sa_flags=SA_NOCLDSTOP;
sigaction(SIGCHLD,&v,0);//change signal 2 like signal(2,my_isr);
while(1);
}
}
// run program in background using ./a.out &
//ps -j
//kill -9 PID_chilf
//ps -j
//fg process come in forground

1- sig-set
#include<stdio.h>
#include<signal.h>
void my_isr(int n)
{
printf("in_isr.....signal no=%d\n",n);
sleep(15);
printf("in isr after sleep:\n");
}
main()
{
struct sigaction v;
v.sa_handler=my_isr; //SIG_DFL SIG_IGN
sigemptyset(&v.sa_mask);
sigaddset(&v.sa_mask,3); //block signal 3
//
//

sigdelset(&v.sa_mask,3); //block signal all instad of 3


sigfillset(&v.sa_mask); //all block

v.sa_flags=SA_RESETHAND;
//v.sa_flags=SA_NOCLDSTOP;
sigaction(2,&v,0);
printf("pid of main:%d\n",getpid());
while(1);
}
//run program press ctrl+c (generet signal 2) its go to isr
//before 15 second if sleep we press ctrl+\ (generet signal 3) it's block signal 3.
//after 15 second its came out from program.
2 change stack size
#include<stdio.h>
#include<sys/time.h>
#include<sys/resource.h>
main()
{
struct rlimit v;
getrlimit(RLIMIT_STACK,&v);
printf("soft limit=%u \n",v.rlim_cur);
printf("hard limit=%u \n",v.rlim_max);
v.rlim_cur=1000;
setrlimit(RLIMIT_STACK,&v);
printf("soft limit=%u \n",v.rlim_cur);
printf("hard limit=%u \n",v.rlim_max);
}

3 -create core file


#include<stdio.h>
#include<sys/time.h>
#include<sys/resource.h>
main()
{
struct rlimit v;
getrlimit(RLIMIT_CORE,&v);
printf("soft limit=%u \n",v.rlim_cur);
printf("hard limit=%u \n",v.rlim_max);
v.rlim_cur=100; // set core file size in byte
setrlimit(RLIMIT_CORE,&v);
printf("soft limit=%u \n",v.rlim_cur);
printf("hard limit=%u \n",v.rlim_max);
}
1 _ change CPU- time
#include<stdio.h>
#include<sys/time.h>
#include<sys/resource.h>
main()
{
struct rlimit v;
getrlimit(RLIMIT_CPU,&v);
printf("soft limit=%u \n",v.rlim_cur);
printf("hard limit=%u \n",v.rlim_max);
v.rlim_cur=10;
//after 10 second program terminat
setrlimit(RLIMIT_CPU,&v);
printf("soft limit=%u \n",v.rlim_cur);
printf("hard limit=%u \n",v.rlim_max);
while(1);
}

3- time
#include<stdio.h>
#include<time.h>
main()
{
time_t t1;

//
//

while(1)
{
t1=time(&t1);
t1=time(0);
printf("%u\n",t1);
printf("%s \n",ctime(&t1));
sleep(1);
system("clear");
}

}
Change filesize
#include<stdio.h>
#include<sys/time.h>
#include<sys/resource.h>
main()
{
struct rlimit v;
getrlimit(RLIMIT_FSIZE,&v);
printf("soft limit=%u \n",v.rlim_cur);
printf("hard limit=%u \n",v.rlim_max);
v.rlim_cur=10;
//after 10 second program terminat
setrlimit(RLIMIT_FSIZE,&v);
printf("soft limit=%u \n",v.rlim_cur);
printf("hard limit=%u \n",v.rlim_max);
}

DATA
ajsfy
dafsoighwig
sgvbv
sjhirv
1)
//ls -l data

(ls -l filename)

//chomd 0777 data (CMD__permition(in octol)__filename)


or
//chmod u+rw- data (CMD__u(u-user,g-group,o-other)+r--(read write excuit)__filename)
//ls -l data

(ls -l filename)

2)
//ls -ls
(for getting number of memory block (4 block at a time after 4096byte other 4 block
allocat))
4)
//ls -li data (ls -ls filename)
(for inode)
3)
(
in program use "umask"
check "man umask"
)
header file
#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<stdlib.h>
#include<sys/stat.h>
#include<unistd.h>
#include<signal.h>
#include<fcntl.h>

File-size-without-open
#include"header.h"
main(int argc,char **argv)
{
struct stat v;
if(argc!=2)
{
printf("./a.out filename\n");
return;
}
if(stat (argv[1],&v)<0)
{
perror("stst");
return;
}
printf("File \"%s\" all infotmation\n\n",argv[1]);
printf("ID of device containing file=.....%d\n",v.st_dev);
printf("inode number=.....................%d\n",v.st_ino);
printf("protection mode=..................%o\n",v.st_mode);
printf("number of hard links=.............%d\n",v.st_nlink);
printf("user ID of owner=.................%d\n",v.st_uid);
printf("group ID of owner =...............%d\n",v.st_gid);
printf("device ID (if special file)=......%d\n",v.st_rdev);
printf("total size,in bytes=..............%d \n",v.st_size);
printf("blocksize for file system I/O=....%d\n",v.st_blksize);
printf("number of 512B blocks allocated=..%d\n",v.st_blocks);
printf("time of last access=..............%d\n",v.st_atime);
printf("time of last modification=........%d\n",v.st_mtime);
printf("time of last status change=.......%d\n",v.st_ctime);
}

Header file
#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<stdlib.h>
#include<sys/stat.h>
#include<unistd.h>
#include<signal.h>
#include<fcntl.h>
#include<dirent.h>
2-ls-cmd
#include"header.h"
main()
{
DIR *dp;
struct dirent *p;
dp=opendir(".");
if(dp==0)
{
perror("opendir");
return;
}
//p=readdir(dp);
while(p=readdir(dp))
printf("%s\n",p->d_name);
}

File size-without-open
#include"header.h"
main(int argc,char **argv)
{
struct stat v;
if(argc!=2)
{
printf("./a.out filename\n");
return;
}
if(stat (argv[1],&v)<0)
{
perror("stst");
return;
}
printf("File \"%s\" all infotmation\n\n",argv[1]);
printf("ID of device containing file=.....%d\n",v.st_dev);
printf("inode number=.....................%d\n",v.st_ino);
printf("protection mode=..................%d\n",v.st_mode);
printf("number of hard links=.............%d\n",v.st_nlink);
printf("user ID of owner=.................%d\n",v.st_uid);
printf("group ID of owner =...............%d\n",v.st_gid);
printf("device ID (if special file)=......%d\n",v.st_rdev);
printf("total size,in bytes=..............%d \n",v.st_size);
printf("blocksize for file system I/O=....%d\n",v.st_blksize);
printf("number of 512B blocks allocated=..%d\n",v.st_blocks);
printf("time of last access=..............%d\n",v.st_atime);
printf("time of last modification=........%d\n",v.st_mtime);
printf("time of last status change=.......%d\n",v.st_ctime);
}

header
#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<stdlib.h>
#include<sys/stat.h>
#include<unistd.h>
#include<signal.h>
#include<fcntl.h>
#include<dirent.h>

info
1)hard link
ln one two (ln filename filename) (CMD present notpresent(created))
file "one" and "two" connected with hard link
2)soft link
ln -s abc xyz (ln -s filename filename) (CMD present notpresent(created))
file "abc" and "def" connected with soft link
ls -l
dir
1)hard link
ln one two (ln filename filename) (CMD present notpresent(created))
file "one" and "two" connected with hard link
2)soft link
ln -s abc xyz (ln -s filename filename) (CMD present notpresent(created))
file "abc" and "def" connected with soft link
ls -l

File-link
#include"header.h"
main(int argc,char **argv)
{
struct stat v;
if(argc!=2)
{
printf("./a.out filename\n");
return;
}
if(stat (argv[1],&v)<0)
{
perror("stst");
return;
}
printf("File \"%s\" all infotmation\n\n",argv[1]);
printf("protection mode=..................%o\n",v.st_mode);
if(S_ISREG(v.st_mode))
printf("regular file\n");
else if(S_ISDIR(v.st_mode))
printf("Directory file\n");
else if(S_ISCHR(v.st_mode))
printf("charactor file\n");
else if(S_ISBLK(v.st_mode))
printf("block file\n");
else if(S_ISFIFO(v.st_mode))
printf("FIFO file\n");
else if(S_ISLNK(v.st_mode))
printf("symbolic link file\n");
else if(S_ISSOCK(v.st_mode))
printf("socket file\n");
}
3-file-link type
#include"header.h"
main(int argc,char **argv)
{
struct stat v,v1;
if(argc!=2)
{
printf("./a.out filename\n");
return;
}
stat(argv[1],&v);
printf("stat=%u\n",v.st_ino);
lstat(argv[1],&v1);
printf("lstat=%u\n",v1.st_ino);
}

4_ls_CMD
#include"header.h"
main()
{
DIR *dp;
struct dirent *p;
dp=opendir("dir");
if(dp==0)
{
perror("opendir");
return;
}
//p=readdir(dp);
while(p=readdir(dp))
if(p->d_name[0]!='.')
printf("%s\n",p->d_name);
}

1-open-file
#include"header.h"
main()
{
int fd,i,a[5]={10,20,30,40,50};
close(1); //0-in 1-out 2-error we close 1 and put data on file
fd=open("data",O_RDWR|O_TRUNC|O_CREAT,0644);
if(fd<0)
{
perror("open");
return;
}
for(i=0;i<5;i++)
printf(" %d",a[i]);
printf("\nhello word fd %d\n",fd);
}
2 open-scan file
#include"header.h"
main()
{
int fd,i,a[5]={10,20,30,40,50};
close(0); //0-in 1-out 2-error (data is open at 0 number so its receive from file)
fd=open("data",O_RDONLY);
if(fd<0)
{
perror("open");
return;
}
for(i=0;i<5;i++)
scanf("%d",&a[i]);
for(i=0;i<5;i++)
printf("%d ",a[i]);
printf("\nfd=%d\n",fd);
}

3 pipe-hello
#include"header.h"
main()
{
int p[2];
pipe(p);
perror("pipe");
printf("read end p[0]=%d\nwrite end p[1]=%d",p[0],p[1]);
if(fork())
{//parent
char a[20];
printf("print data from parent:\n");
scanf("%s",a);
write(p[1],a,strlen(a)+1);
}
else
{
//child
char b[20];
printf("data read in child:\n");
read(p[0],b,sizeof(b));
printf("\nchaild in data :%s\n",b);
}
}

4 pipe char upper sleep


#include"header.h"
main()
{
int p[2];
pipe(p);
perror("pipe");
printf("read end p[0]=%d\nwrite end p[1]=%d",p[0],p[1]);
if(fork())
{//parent
char a[20];
printf("print data from parent:\n");
scanf("%s",a);
write(p[1],a,strlen(a)+1);
sleep(1);
read(p[0],a,sizeof(a));
printf("data=%s\n",a);
}
else
{
//child
int i;
char b[20];
printf("data read in child:\n");
read(p[0],b,sizeof(b));
for(i=0;b[i];i++)
if(b[i]>='a' && b[i]<='z')
b[i]=b[i]-32;
write(p[1],b,strlen(b)+1);
}
}

5 2-pipe char upper


#include"header.h"
main()
{
int p[2],q[2];
pipe(p);
pipe(q);
perror("pipe");
printf("read end p[0]=%d\nwrite end p[1]=%d",p[0],p[1]);
if(fork())
{//parent
char a[20];
printf("print data from parent:\n");
scanf("%s",a);
write(p[1],a,strlen(a)+1);
sleep(1);
read(q[0],a,sizeof(a));
printf("data=%s\n",a);
}
else
{//child
int i;
char b[20];
printf("data read in child:\n");
read(p[0],b,sizeof(b));
for(i=0;b[i];i++)
if(b[i]>='a' && b[i]<='z')
b[i]=b[i]-32;
write(q[1],b,strlen(b)+1);
}
}
6 size of pipe
#include"header.h"
main()
{
char ch='a';
int p[2],c=0;
//pipe(p);
pipe2(p,O_NONBLOCK);
while(write(p[1],&ch,1)!=-1)
{
c++;
//
printf("%d\n",c);
}
printf("%d\n",c);
}

pipe
creat fifo file "mkfifo filename" "ls -l"
1- creat-msg
#include"header.h"
main()
{
int id;
id=msgget(4,IPC_CREAT|0644);
if(id<0)
{
perror("msgget");
return;
}
printf("id=%d\n",id);
}
1-send-msg
#include"header.h"
struct msgbuf
{
long mytype;
char a[20];
};
main(int argc,char **argv)
{
struct msgbuf v;
int id;
if (argc!=3)
{
printf("format ./snd smgtype msg\n");
return;
}
id=msgget(4,IPC_CREAT|0644);
if(id<0)
{
perror("msgget");
return;
}
v.mytype=atoi(argv[1]);
strcpy(v.a,argv[2]);
printf("id=%d\n",id);
msgsnd(id,&v,strlen(v.a)+1,0);
perror("magsnd");
}

3-recieve-msg
#include"header.h"
struct msgbuf
{
long mytype;
char a[20];
};
main(int argc,char **argv)
{
struct msgbuf v;
int id;
if (argc!=2)
{
printf("format ./snd smgtype msg\n");
return;
}
id=msgget(4,IPC_CREAT|0644);
if(id<0)
{
perror("msgget");
return;
}
v.mytype=atoi(argv[1]);
//strcpy(v.a,argv[2]);
printf("id=%d\n",id);
msgrcv(id,&v,sizeof(v),atoi(argv[1]),0);
//argv[1]
//msgrcv(id,&v,sizeof(v),atoi(argv[1]),MSG_EXCEPT);
//1) >0 -> normal
//2) 0< -> any one first in que
//3) =0 ->first nod display
perror("magrcv");
printf("%s\n",v.a);
}
data
for show message data
CMD "ipcs -q"
removeing message from memory
CMD "ipcrm -Q key
removeing message from memory
CMD "ipcrm -q id"
life time
1 untill remove using cmd
2 shut down system
ipcs -q -l

//argv[1]

1_send-shm
#include"header.h"
main()
{
int id;
char *p;
id=shmget(4,50,IPC_CREAT|0644);
if(id<0)
{
perror("shmget");
return;
}
printf("id=%d\n",id);
p=shmat(id,0,0);
printf("Enter the data\n");
scanf("%s",p);
}
2-recieve-shm
#include"header.h"
main()
{
int id;
char *p;
id=shmget(4,50,IPC_CREAT|0644);
if(id<0)
{
perror("shmget");
return;
}
printf("id=%d\n",id);
p=shmat(id,0,0);
printf("msg=%s",p);
//printf("Enter the data\n");
//scanf("%s",p);
}

1-1-get
#include"header.h"
main(int argv,char **argc)
{
int id,ret;
if(argc!=2)
{
printf("use: ./set semnum\n");
return;
}
id=semget(4,5,IPC_CREAT|0644);
if(id<0);
{
perror("semget");
return;
}
printf("id=%d\n",id);
ret=semctl(id,atoi(argc[1]),GETVAL);
printf("ret=%d\n",ret);
}
1-2-set
#include"header.h"
main(int argv,char **argc)
{
int id;

//
//
}

if(argc!=3)
{
printf("use: ./get semnum val\n");
return;
}
id=semget(4,5,IPC_CREAT|0644);
if(id<0);
{
perror("semget");
return;
}
printf("id=%d\n",id);
semctl(id,atoi(argc[1]),SETVAL,atoi(argc[2]));
printf("ret=%d\n",ret);

1_3_op
#include"header.h"
main(int argv,char **argc)
{
struct sembuf v;
int id;
id=semget(4,5,IPC_CREAT|0644);
if(id<0)
{
perror("semfet");
return;
}
v.set_num=2; //witch subsem we are dealing
v.set_op=0; //+,-,0
v.set_flg=0;
printf("before");
semop(id,&v,1);
printf("after");
}

#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<stdlib.h>
#include<sys/stat.h>
#include<unistd.h>
#include<signal.h>
#include<fcntl.h>
#include<dirent.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#include<sys/ipc.h>
#include<sys/shm.h>
#include<sys/sem.h>

2-1 file-write-w1
#include"header.h"
main()
{
struct sembuf v;
int id,fd,i;
char a[]="abcdefghijklmnop";
fd=open("data2",O_RDWR|O_APPEND|O_CREAT,0664);
id=semget(4,5,IPC_CREAT|0644);
if(id<0)
{
perror("semget");
return;
}
/*
v.sem_num=1;
v.sem_op=0;
v.sem_flg=0;
printf("before\n");
semop(id,&v,1);
semctl(id,1,SETVAL,1);
printf("after\n");
*/
for(i=0;a[i];i++)
{
write(fd,&a[i],1);
sleep(1);
}
printf("done\n");
semctl(id,1,SETVAL,0);
}

2-2-file write-w2
#include"header.h"
main()
{
struct sembuf v;
int id,fd,i;
char a[]="ABCDEFGHIJKLMNOP";
fd=open("data2",O_RDWR|O_APPEND|O_CREAT,0664);
id=semget(4,5,IPC_CREAT|0644);
if(id<0)
{
perror("semget");
return;
}
/*
v.sem_num=1;
v.sem_op=0;
v.sem_flg=0;
printf("before\n");
semop(id,&v,1);
semctl(id,1,SETVAL,1);
printf("after\n");
*/
for(i=0;a[i];i++)
{
write(fd,&a[i],1);
sleep(1);
}
printf("done\n");
semctl(id,1,SETVAL,0);
}

3-1-file-write-zz-v1.c
#include"header.h"
main()
{
struct sembuf v;
int id,fd,i;
char a[]="abcdefghijklmnop";
fd=open("data3",O_RDWR|O_APPEND|O_CREAT,0664);
id=semget(4,5,IPC_CREAT|0644);
if(id<0)
{
perror("semget");
return;
}
v.sem_num=1;
v.sem_op=0;
v.sem_flg=0;
printf("before\n");
semop(id,&v,1);
semctl(id,1,SETVAL,1);
printf("after\n");
for(i=0;a[i];i++)
{
write(fd,&a[i],1);
sleep(1);
}
printf("done\n");
semctl(id,1,SETVAL,0);
}

3-2-file-write-zz-v2
#include"header.h"
main()
{
struct sembuf v;
int id,fd,i;
char a[]="ABCDEFGHIJKLMNOP";
fd=open("data3",O_RDWR|O_APPEND|O_CREAT,0664);
id=semget(4,5,IPC_CREAT|0644);
if(id<0)
{
perror("semget");
return;
}
v.sem_num=1;
v.sem_op=0;
v.sem_flg=0;
printf("before\n");
semop(id,&v,1);
semctl(id,1,SETVAL,1);
printf("after\n");
for(i=0;a[i];i++)
{
write(fd,&a[i],1);
sleep(1);
}
printf("done\n");
semctl(id,1,SETVAL,0);
}

3-2-file-write-zzz-v2
#include"header.h"
main()
{
struct sembuf v;
int id,fd,i;
char a[]="ABCDEFGHIJKLMNOP";
fd=open("data3",O_RDWR|O_APPEND|O_CREAT,0664);
id=semget(4,5,IPC_CREAT|0644);
if(id<0)
{
perror("semget");
return;
}
v.sem_num=1;
v.sem_op=0;
v.sem_flg=0;
printf("before\n");
semop(id,&v,1);
semctl(id,1,SETVAL,1);
printf("after\n");
for(i=0;a[i];i++)
{
write(fd,&a[i],1);
sleep(1);
}
printf("done\n");
semctl(id,1,SETVAL,0);
}

4-1-alt-a1.c
#include"header.h"
main()
{
struct sembuf v;
int id,fd;
char i;
fd=open("data4",O_RDWR|O_APPEND|O_CREAT,0644);
id=semget(4,5,IPC_CREAT|0644);
if(id<0)
{
perror("semget");
return;
}
v.sem_num=1;
v.sem_op=0;
v.sem_flg=0;
for(i='a';i<='z';i++)
{
semop(id,&v,1);
semctl(id,2,SETVAL,1);
write(fd,&i,1);
sleep(1);
semctl(id,2,SETVAL,0);
semctl(id,1,SETVAL,1);
}
printf("done\n");
}

4-2- alt -a2


#include"header.h"
main()
{
struct sembuf v;
int id,fd;
char i;
fd=open("data4",O_RDWR|O_APPEND|O_CREAT,0644);
id=semget(4,5,IPC_CREAT|0644);
if(id<0)
{
perror("semget");
return;
}
v.sem_num=2;
v.sem_op=0;
v.sem_flg=0;
for(i='A';i<='Z';i++)
{
semop(id,&v,1);
semctl(id,1,SETVAL,1);
write(fd,&i,1);
sleep(1);
semctl(id,1,SETVAL,0);
semctl(id,2,SETVAL,1);
}
printf("done\n");
}

1-duplicate-file-display
#include"header.h"
main()
{
int p[2];
pipe(p);
if(fork()==0)
{//grap
close(0);
dup(p[0]);
close(p[1]);
execlp("grep","grep","pts/0",NULL);
}
if(fork()==0)
{//ps
close(1);
dup(p[1]);
close(p[0]);
execlp("ps","ps","-el",NULL);
}
}
2-duplicate-fcntl
#include"header.h"
main()
{
char ch='a';
int p[2],c=0;
pipe(p);
fcntl(p[1],F_SETFL,O_NONBLOCK);
while(write(p[1],&ch,1)!=1)
{
c++;
}
printf("c=%d\n",c);
}
#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<stdlib.h>
#include<sys/stat.h>
#include<unistd.h>
#include<signal.h>
#include<fcntl.h>
#include<dirent.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#include<sys/ipc.h>
#include<sys/shm.h>
#include<sys/sem.h>

Вам также может понравиться