プログラム出力リダイレクト

プログラム出力リダイレクト

たとえば、「一部の数字が次より大きい」構文を使用してプログラム出力をリダイレクトしようとすると、foo 2> myfileここで可能な数字は何であり、これは何を表しますか?

/dev/stdout私は1が、2価だと思います/dev/stderr。 5と6はどうですか? 3、4、6より大きい数字がありますか?

ベストアンサー1

この仮想プログラムは、ユーザーが指定したファイル記述子に書き込みます。次のHello Worldプログラムを考えてみましょう。

#include <stdio.h>

main()
{
   ssize_t i = 0 ;
   printf ("hello world\n") ;
   i = write( 5 , "Bonjour Monde\n", 14 ) ;
   printf ("%d octet dans 5\n", (int) i) ;
}

それをコンパイルする

me@mybox:~/tmp7$ make hw
cc     hw.c   -o hw

今すぐ実行してください。

me@mybox:~/tmp7$ ./hw
hello world
-1 octet dans 5

5 ファイルがないため、バイトは書き込まれません。

次に試してみてください。

me@mybox:~/tmp7$ ./hw 5> u
hello world
14 octet dans 5
me@mybox:~/tmp7$ cat u
Bonjour Monde

ファイルとファイル記述子(例5>u:)を指定すると、出力が得られました。

実際に上記のような興味深いプログラムを書かない限り5>foo

シェルスクリプトでは、<()構文を使用する方が便利です。

 diff <( cmd -par 1 ) <(cmd -par 2)

おすすめ記事