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 @@ -DD(1) User Commands DD(1) - -NAME - dd - convert and copy a file - -SYNOPSIS - dd [OPERAND]... - dd OPTION - -DESCRIPTION - 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: - - --help display this help and exit - - --version - output version information and exit - -AUTHOR - Written by Paul Rubin, David MacKenzie, and Stuart Kemp. - -REPORTING BUGS - GNU coreutils online help: - Report any translation bugs to - -COPYRIGHT - 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. - -SEE ALSO - Full documentation - or available locally via: info '(coreutils) dd invocation' - -GNU coreutils 9.3 April 2023 DD(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; }