diff --git a/SCR3.1/TP2/, b/SCR3.1/TP2/,
deleted file mode 100644
index e409cac..0000000
--- a/SCR3.1/TP2/,
+++ /dev/null
@@ -1,158 +0,0 @@
-[4mDD[24m(1) User Commands [4mDD[24m(1)
-
-[1mNAME[0m
- dd - convert and copy a file
-
-[1mSYNOPSIS[0m
- [1mdd [22m[[4mOPERAND[24m]...
- [1mdd [4m[22mOPTION[0m
-
-[1mDESCRIPTION[0m
- Copy a file, converting and formatting according to the operands.
-
- bs=BYTES
- read and write up to BYTES bytes at a time (default: 512); over‐
- rides ibs and obs
-
- cbs=BYTES
- convert BYTES bytes at a time
-
- conv=CONVS
- convert the file as per the comma separated symbol list
-
- count=N
- copy only N input blocks
-
- ibs=BYTES
- read up to BYTES bytes at a time (default: 512)
-
- if=FILE
- read from FILE instead of stdin
-
- iflag=FLAGS
- read as per the comma separated symbol list
-
- obs=BYTES
- write BYTES bytes at a time (default: 512)
-
- of=FILE
- write to FILE instead of stdout
-
- oflag=FLAGS
- write as per the comma separated symbol list
-
- seek=N (or oseek=N) skip N obs-sized output blocks
-
- skip=N (or iseek=N) skip N ibs-sized input blocks
-
- status=LEVEL
- The LEVEL of information to print to stderr; ’none’ suppresses
- everything but error messages, ’noxfer’ suppresses the final
- transfer statistics, ’progress’ shows periodic transfer statis‐
- tics
-
- N and BYTES may be followed by the following multiplicative suffixes:
- c=1, w=2, b=512, kB=1000, K=1024, MB=1000*1000, M=1024*1024, xM=M,
- GB=1000*1000*1000, G=1024*1024*1024, and so on for T, P, E, Z, Y, R, Q.
- Binary prefixes can be used, too: KiB=K, MiB=M, and so on. If N ends
- in ’B’, it counts bytes not blocks.
-
- Each CONV symbol may be:
-
- ascii from EBCDIC to ASCII
-
- ebcdic from ASCII to EBCDIC
-
- ibm from ASCII to alternate EBCDIC
-
- block pad newline-terminated records with spaces to cbs-size
-
- unblock
- replace trailing spaces in cbs-size records with newline
-
- lcase change upper case to lower case
-
- ucase change lower case to upper case
-
- sparse try to seek rather than write all-NUL output blocks
-
- swab swap every pair of input bytes
-
- sync pad every input block with NULs to ibs-size; when used with
- block or unblock, pad with spaces rather than NULs
-
- excl fail if the output file already exists
-
- nocreat
- do not create the output file
-
- notrunc
- do not truncate the output file
-
- noerror
- continue after read errors
-
- fdatasync
- physically write output file data before finishing
-
- fsync likewise, but also write metadata
-
- Each FLAG symbol may be:
-
- append append mode (makes sense only for output; conv=notrunc sug‐
- gested)
-
- direct use direct I/O for data
-
- directory
- fail unless a directory
-
- dsync use synchronized I/O for data
-
- sync likewise, but also for metadata
-
- fullblock
- accumulate full blocks of input (iflag only)
-
- nonblock
- use non-blocking I/O
-
- noatime
- do not update access time
-
- nocache
- Request to drop cache. See also oflag=sync
-
- noctty do not assign controlling terminal from file
-
- nofollow
- do not follow symlinks
-
- Sending a USR1 signal to a running ’dd’ process makes it print I/O sta‐
- tistics to standard error and then resume copying.
-
- Options are:
-
- [1m--help [22mdisplay this help and exit
-
- [1m--version[0m
- output version information and exit
-
-[1mAUTHOR[0m
- Written by Paul Rubin, David MacKenzie, and Stuart Kemp.
-
-[1mREPORTING BUGS[0m
- GNU coreutils online help:
- Report any translation bugs to
-
-[1mCOPYRIGHT[0m
- Copyright © 2023 Free Software Foundation, Inc. License GPLv3+: GNU
- GPL version 3 or later .
- This is free software: you are free to change and redistribute it.
- There is NO WARRANTY, to the extent permitted by law.
-
-[1mSEE ALSO[0m
- Full documentation
- or available locally via: info '(coreutils) dd invocation'
-
-GNU coreutils 9.3 April 2023 [4mDD[24m(1)
diff --git a/SCR3.1/TP2/copy b/SCR3.1/TP2/copy
deleted file mode 100755
index 7ab7bc9..0000000
Binary files a/SCR3.1/TP2/copy and /dev/null differ
diff --git a/SCR3.1/TP2/copy_std b/SCR3.1/TP2/copy_std
deleted file mode 100755
index f62576c..0000000
Binary files a/SCR3.1/TP2/copy_std and /dev/null differ
diff --git a/SCR3.1/TP2/eraser.c b/SCR3.1/TP2/eraser.c
index ca72706..f116cb6 100644
--- a/SCR3.1/TP2/eraser.c
+++ b/SCR3.1/TP2/eraser.c
@@ -3,21 +3,26 @@
#include
#include
#include
-#include
+#include
+#include
+#define BLOCK_SIZE 1
int main(int argc, char **argv){
- int fd, read_bytes, wrote_bytes;
+ int fd, fd1;
+ ssize_t read_bytes, wrote_bytes;
+ char buf[BLOCK_SIZE];
+ char *name;
if (argc != 2){
printf("Usage : %s ", argv[0]);
exit(EXIT_FAILURE);
}
- struct stat sf;
+ struct stat sb;
if (stat(argv[1], &sb) == -1){
perror("stat");
exit(EXIT_FAILURE);
}
- if (sb.st_nlink >= (nlink_t) 1) {
- unlink(argv[0]);
+ if (sb.st_nlink > (nlink_t) 1) {
+ unlink(argv[1]);
exit(EXIT_FAILURE);
}
else {
@@ -26,7 +31,22 @@ int main(int argc, char **argv){
perror("fd");
exit(EXIT_SUCCESS);
}
+ while (read_bytes = read(fd,buf,BLOCK_SIZE) > 0) {
+ wrote_bytes = write(fd,"0xff",BLOCK_SIZE);
+ }
+ fd1 = open("/dev/urandom", O_RDONLY);
+ while (read(fd, buf, BLOCK_SIZE) > 0) {
+ read_bytes = read(fd1, buf, BLOCK_SIZE);
+ wrote_bytes = write(fd, buf, BLOCK_SIZE);
+ }
+ srand(time(NULL));
+ name = "file" + (char) rand() + ".crypt";
+ rename(argv[1], name);
+ unlink(name);
+ }
+ close(fd);
+ close(fd1);
return EXIT_SUCCESS;
}
diff --git a/SCR3.1/TP2/test b/SCR3.1/TP2/test
new file mode 100644
index 0000000..aa83bd4
--- /dev/null
+++ b/SCR3.1/TP2/test
@@ -0,0 +1 @@
+Eh
diff --git a/SCR3.1/TP2/toto b/SCR3.1/TP2/toto
deleted file mode 100644
index cdedea5..0000000
Binary files a/SCR3.1/TP2/toto and /dev/null differ
diff --git a/SCR3.1/TP2/toto.dut b/SCR3.1/TP2/toto.dut
deleted file mode 100644
index cdedea5..0000000
Binary files a/SCR3.1/TP2/toto.dut and /dev/null differ
diff --git a/SCR3.1/TP2/toto2 b/SCR3.1/TP2/toto2
deleted file mode 100644
index cdedea5..0000000
Binary files a/SCR3.1/TP2/toto2 and /dev/null differ
diff --git a/SCR3.1/TP3/cat b/SCR3.1/TP3/cat
new file mode 100644
index 0000000..08ecbb3
--- /dev/null
+++ b/SCR3.1/TP3/cat
@@ -0,0 +1 @@
+Il est 22:26 ,et nous sommes mardi ! input
diff --git a/SCR3.1/TP3/ex5.c b/SCR3.1/TP3/ex5.c
deleted file mode 100644
index 033f8d9..0000000
--- a/SCR3.1/TP3/ex5.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include
-#include
-#include
-#include
-
-#define SIZE 1000
-int search(const unsigned char * t,int start,int end)
-{
- for (int i = start; i <= end; i++){
- int
-
-}
-
-int main(int argc , char * argv[])
-{
- int i;
- unsigned char arr[SIZE];
-
- srandom(time(NULL));
-
- for (i = 0; i < SIZE; i++)
- arr[i] = (unsigned char) (random() % 255) + 1;
-
- printf("Enter a number between 0 and %d: ", SIZE);
- scanf(" %d", &i);
- if (i >= 0 && i < SIZE) arr[i] = 0;
-
- if (search(arr,0,SIZE-1))
- printf("Found !\n");
- else
- printf("Not found !\n");
- return EXIT_SUCCES;
-}
-
-
diff --git a/SCR3.1/TP3/input b/SCR3.1/TP3/input
index 8ca4f92..0cac5b6 100644
--- a/SCR3.1/TP3/input
+++ b/SCR3.1/TP3/input
@@ -1 +1,2 @@
-La voie lactée, les gros yeux, le bonheur d'une impératrice
+Coucou
+Il est 22:26 ,et nous sommes mardi !
diff --git a/SCR3.1/TP3/output b/SCR3.1/TP3/output
index c3dcb7e..71dda11 100644
--- a/SCR3.1/TP3/output
+++ b/SCR3.1/TP3/output
@@ -1 +1,3 @@
-La voie lactée, les gros yeux, le bonheur dune' impératrice
+Coucou
+lI est 22:26 ,et nous smmes mardi !
+o
\ No newline at end of file
diff --git a/SCR3.1/TP4/mytimeout b/SCR3.1/TP4/mytimeout
new file mode 100755
index 0000000..feb1fc0
Binary files /dev/null and b/SCR3.1/TP4/mytimeout differ
diff --git a/SCR3.1/TP4/mytimeout.c b/SCR3.1/TP4/mytimeout.c
index 9179b8e..63003e8 100644
--- a/SCR3.1/TP4/mytimeout.c
+++ b/SCR3.1/TP4/mytimeout.c
@@ -1,24 +1,41 @@
#include
#include
+#include
#include
#include
+#include
#include
+#include "helpers.c"
+#include "helpers.h"
+#define BUF_SIZE 256
void kill_son(int){
- if
+ if (waitpid(-1,NULL,WNOHANG)==0)
+ kill(0, SIGKILL);
+}
int main(int argc, char **argv){
+ char* args[argc - 2];
+ char path[BUF_SIZE] = "/usr/bin/";
+ int secondes = (int) strtod(argv[1], NULL);
+ pid_t p;
if (argc < 3){
printf("Usage : %s [arg]", argv[0]);
return EXIT_FAILURE;
}
- int secondes = (int) strtod(argv[1], NULL);
- pid_t p;
+ strcat(path, argv[2]);
+ for (int i = 2; i < argc; i++)
+ args[i - 2] = argv[i];
p = fork();
switch(p){
- case 0 :
-
- execl("/usr/bin/sh" , "-c", argv[2])
+ case 0:
+ execv(path, args);
+ exit(0);
case -1:
-
+ exit(EXIT_FAILURE);
default:
-
+ alarm(secondes);
+ set_signal_handler(SIGALRM, &kill_son);
+ sleep(secondes);
+ }
+ exit(0);
+}
diff --git a/SCR3.1/TP4/test.c b/SCR3.1/TP4/test.c
index e973aff..a8e2bae 100644
--- a/SCR3.1/TP4/test.c
+++ b/SCR3.1/TP4/test.c
@@ -1,8 +1,12 @@
#include
#include
-int main(){
- int t[4] = {1, 2, 3, 4}, u[2] = t[1:];
+int main(int argc, char** argv){
+ int t[4] = {1, 2, 3, 4};
+ char* args;
+ for (int i = 0; i < argc; i++){
+ args += argv[i];
+ }
return 0;
}