-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathajuda.txt
72 lines (61 loc) · 2.56 KB
/
ajuda.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Right execution:
./bin/pipex ./files/file-in "cat" "wc -l" ./files/file-out
./bin/pipex ./files/file-in "cat" "grep Avengers" ./files/file-out
Error in action:
./bin/pipex file-in "cat" "wc -l" file-out
Command in terminal:
cat ./files/file-in | wc -l > ./files/file-out
cat ./files/file-in | grep Avengers > ./files/file-out
ArgvParams:
argv[0]: ./bin/pipex
argv[1]: ./files/file-in
argv[2]: cat
argv[3]: grep Avengers
argv[4]: ./files/file-out
Envp variables:
...
envp[33]: QT_X11_NO_MITSHM=1
envp[34]: WINDOWPATH=2
envp[35]: PATH=/home/rlins/.asdf/shims:/home/rlins/.asdf/bin:/home/rlins/.local/bin:/home/rlins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin
PATH=
/home/rlins/.asdf/shims
/home/rlins/.asdf/bin
/home/rlins/.local/bin
/home/rlins/.local/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/snap/bin
/snap/bin
FD: A file descriptor is a number that uniquely identifies an open file in a computer's operating system. It describes a data resource, and how that resource may be accessed.
'<' '>' = Redirection operators
Debug in child process - Before fork apply command in debug console:
'-exec set follow-fork-mode child'
Use perror to debug after call fork()
*We don’t provide enough arguments to pipex.
*We provide too many arguments to pipex. (Except for bonus)
*The input file does not exist.
*The output file does not exist.
*First command does not exist.
*Second command does not exist.
*That input file exists, but we did a chmod 000 on it, so we can’t open it.
'Invalid OutPut'
chmod 000 file-in
*That output file does exist but it can’t be modified (we did a chmod 000 on it too!)
'Invalid OutPut'
chmod 000 file-out
*The output file exists and can be modified. Did we append or overwrite it?
*None of the commands exist.
mais testes (acelera):
*e se uma das flags for um espaço ' ' ou uma aspa simples '\''?
*e se um dos comandos passados não existir?
*e se nenhum dos comandos passados existirem?
*e se o input ou o output não tiver permissão pra ser escrito/lido?
*sempre comparando com o resultado do comando original via terminal.
-aqui pode ser útil rodar o comando echo $? para descobrir qual foi o código de retorno do último processo executado pelo terminal, para que sua main reproduza o mesmo comportamento.
e se os comandos existem, mas o arquivo input não existir? E se um comando não existir e o input não tiver permissão de escrita? Como o bash originalmente se comporta? Seu programa deve emular o mesmo comportamento.