| 290 | ===== stdout.c ===== |
| 291 | |
| 292 | {{{ |
| 293 | #!c |
| 294 | /* |
| 295 | scrive st stdout(1) gli argomenti ricevuti sulla riga di comando |
| 296 | |
| 297 | utile per capire come funzionano quoting, escaping e command substitution nella shell: |
| 298 | e.s. ./stdout "ciao ciao" |
| 299 | ./stdout ciao ciao |
| 300 | a="giallo"; b="rosso" ; ./stdout "$a $b" |
| 301 | ./stdout $(ls /etc) |
| 302 | |
| 303 | compilare con: cc -o stdout stdout.c |
| 304 | |
| 305 | */ |
| 306 | |
| 307 | #include <stdio.h> |
| 308 | |
| 309 | int main(int argc, char **argv) { |
| 310 | int i; |
| 311 | |
| 312 | for (i = 0; i < argc; i++) { |
| 313 | printf("%d: %s\n", i, argv[i]); |
| 314 | } |
| 315 | |
| 316 | return 0; |
| 317 | } |
| 318 | }}} |
| 319 | |
| 320 | ==== stdouterr.c ==== |
| 321 | |
| 322 | {{{ |
| 323 | #!c |
| 324 | |
| 325 | /* |
| 326 | scrive su stdout(1) e stderr (2) gli argomenti ricevuti sulla riga di |
| 327 | comando; l'i-esimo argomento viene scritto su stdout se i e' pari e su |
| 328 | stderr se i e' dispari |
| 329 | |
| 330 | utile per capire come funzionano redirezione e pipe nella shell |
| 331 | e.s. ./stdouterr "primo argomento" "secondo argomento" | cat |
| 332 | ./stdouterr "primo argomento" "secondo argomento" 2> /tmp/2 |
| 333 | ./stdouterr "primo" "secondo" 2> /dev/null |
| 334 | |
| 335 | per compilare: cc -o stdouterr stdouterr.c |
| 336 | */ |
| 337 | |
| 338 | #include <stdio.h> |
| 339 | #include <string.h> |
| 340 | |
| 341 | int main(int argc, char **argv) { |
| 342 | int i; |
| 343 | char buf[2048]; |
| 344 | |
| 345 | for (i = 0; i < argc; i++) { |
| 346 | snprintf(buf, 2047, "%d: %s\n", i, argv[i]); |
| 347 | write(i % 2 + 1, buf, strlen(buf)); |
| 348 | } |
| 349 | |
| 350 | return 0; |
| 351 | } |
| 352 | |
| 353 | }}} |
| 354 | |
| 355 | |