タグ付けされた質問 「posix」

POSIXは、オペレーティングシステム間の互換性を維持するためにIEEEによって指定された規格のファミリであるPortable Operating System Interfaceの頭字語です。

5
プログラミング言語での実装ではない場合、「システムコール」とはどういう意味ですか?
「システムコール」という用語を理解したいと思います。システムコールは、ユーザー空間アプリケーションからカーネルサービスを取得するために使用されることをよく知っています。 明確にする必要があるのは、「システムコール」と「システムコールのC実装」の違いです。 これは私を混乱させる引用です: Unixライクなシステムでは、そのAPIは通常、システム呼び出しにラッパー関数を提供するglibcなどのCライブラリ(libc)の実装の一部であり、多くの場合、呼び出し元のシステム呼び出しと同じ名前が付けられます。 「彼らが呼ぶシステムコール」とは何ですか?それらのソースはどこですか?コードに直接含めることはできますか? 一般的な意味での「システムコール」はPOSIX定義のインターフェイスにすぎませんが、実際に実装を確認するにはCソースを調べ、実際のユーザー空間からカーネルへの通信が実際にどのように行われるかを確認しますか? 背景メモ:最終的に、各c関数がからのデバイスと対話するかどうかを理解しようとしています/dev。
14 kernel  c  posix  system-calls 

2
おそらく空白を含むファイル名のリストを扱うPOSIX準拠の方法
空白を含むファイル名を操作するための配列の使用を提案するBashスクリプトガイドを見てきました。ただし、DashAsBinShは配列には移植性がないことを示唆しているため、空白を含むファイル名のリストを扱うPOSIX準拠の方法を探しています。 以下のスクリプト例を修正して、 echo foo/target/a.jar foo/target/b.jar bar/target/lol whitespace.jar ここにスクリプトがあります #!/usr/bin/env sh INPUT="foo/target/a.jar foo/target/b.jar bar/target/b.jar bar/target/lol whitespace.jar" # this would be produced by a 'ls' command # We can execute the ls within the script, if it helps dostuffwith() { echo $1; }; F_LOCATIONS=$INPUT ALL_FILES=$(for f in $F_LOCATIONS; do echo `basename $f`; …

4
変数展開のあるbashスクリプトで-execを見つける
bashスクリプトで次のようなコマンドを実行しようとしています。のすべてのサブフォルダーを検索し$sourcedir、特定の種類のすべてのファイルをのルートレベルにコピーする必要があります$targetdir。 #!/bin/bash # These are set as arguments to the script, not hard-coded sourcedir="/path/to/sourcedir" targetdir="/path/to/targetdir" find "$sourcedir" -type f -name "*.type" -exec sh -c 'cp "$1" "$2/`basename "$1"`"' "{}" "$targetdir" \; ことを除いて、これは、かなり近いように思える{}ように渡されていない$2と-exec sh -c ... これをできる限り「正しい方法」に近づけ、ファイル名の特殊文字(具体的には一重引用符文字)の許容範囲内で行いたいと思います。 編集:私は人々がxargs引数チェーンを使用することを提案しているのを見ます。私は、これは限られた数の議論に対してのみ大丈夫であるという印象を受けていました。たとえば、多数のギャラリーディレクトリから巨大なスライドショーディレクトリにコピーしようとしている数千の.jpgファイルがある場合、引数をチェーン化したソリューションは引き続き機能しますか? 編集2:私の問題は_、-execコマンドでshする最初のオプションの前に行方不明でした。findコマンドを機能させる方法に興味がある人は_、すべて追加してください。 find "$sourcedir" -type f -name "*.type" -exec sh -c 'cp "$1" "$2"' …

2
POSIXおよびUNIXの公式ドキュメントはどこで入手できますか?
すべてのPOSIX標準と仕様に関する公式文書を探しています。UNIXシステムと、それらが低レベルでどのように機能するかについての理解を深めるために、ドキュメントを読むことができないようにしたいと思います。私は、opengroup.orgへのリンクをあちこちで見ました。これは、標準の背後にあるエンティティであると想定しています(ただし、IEEEが多くのことを言及していると聞きました)。 POSIXの概要については、次の質問を参照してください。POSIXとは正確には何ですか?たくさんの質問に答えてくれました。

3
yashシェルのprintfが組み込みコマンドであるかどうかについて少し混乱しています
yashシェルがありprintf、内蔵してそのマニュアルに従って。 しかし、これはyashデフォルト設定のシェルで見られるものです: kk@eeyore ~ $ command -v printf /usr/bin/printf kk@eeyore ~ $ type printf printf: a regular built-in at /usr/bin/printf されたprintfビルトインこのシェルではありませんか?結果は、外部コマンドとしても利用可能な、他の多くの組み込みユーティリティと同様です。 比較として、pdksh(kshOpenBSDでは、組み込みでprintfはありません): $ command -v printf /usr/bin/printf $ type printf printf is /usr/bin/printf そして中bash(ここprintf でビルトイン): $ command -v printf printf $ type printf printf is a shell builtin

1
Solaris 11上のPOSIX Awk?
これは多かれ少なかれ、次の2つのフォローアップの質問です。 awk '!x [$ 0] ++'ファイルを介して重複行を削除する構文エラー SunOsおよびLinuxでのawk / nawkの代替 Solaris 10(SunOS 5.10)では、次の結果が得られます。 $ type -a awk awk is /usr/bin/awk $ PATH="$(getconf PATH)" type -a awk awk is /usr/xpg4/bin/awk awk is /usr/bin/awk $ Solaris 10では、/usr/bin/awkPOSIX標準のawkはのような構文は受け付けていません'!x[$0]++'が、/usr/xpg4/bin/awkありません。これで十分です。 ただし、Solaris 11上で、唯一の存在である/usr/bin/awkにもしてgetconf PATH。があり、nawkありますoawkが/usr/bin、これらはどこからでもシンボリックリンクによって示されていないことは明らかです。 SolarisがPOSIX認定を受けていることを知って、これは驚きました。 他のPOSIX準拠システムでも動作する移植可能なコードを使用して、Solaris 11でPOSIX準拠のAwkを標準的に入手するにはどうすればよいですか?(または、存在するかどうかを確認し、存在する場合はこれらのいずれnawkかoawkを使用する唯一のオプションですか?) そのことについては、何をしている nawkとoawk?
13 awk  solaris  posix 

2
POSIXシェルの関数と変数の個別の名前空間
ダッシュでは、関数と変数は別々の名前空間にあるように見えます: fn(){ fn="hello world" } fn; echo "The value is $fn!" #prints: The value is hello world! fn; echo "The value is $fn!" #prints: The value is hello world! #the fn variable doesn't conflict with the fn function これはダッシュ固有の機能ですか、それともPOSIXの保証ですか?
13 shell  posix  dash 


3
「$ {PS1-}」は有効な構文であり、プレーンな「$ PS1」とどのように違いますか?
私が持っているスクリプトを見ています: if [ "${PS1-}" ]; then -PosixやBashの標準構文には見えないので、この最後のバグは少し気になります。それは永遠に存在していたこの難解な構文ですか、それともタイプミスですか?標準/ドキュメントへの参照をいただければ幸いです。 通常、私はそれをコーディングします: if [ "$PS1" ]; then どちらが正しいのですか、それとも違いがありますか?

1
sedで複数の感嘆符を使用する意味は何ですか?
POSIX sedのドキュメントによると: 関数の前に1つ以上の「!」を付けることができます。この場合、アドレスがパターンスペースを選択しない場合に機能が適用されます。ゼロ個以上の<空白>文字は、最初の '!'の前に受け入れられます。キャラクター。<空白>文字が「!」の後に続くことができるかどうかは指定されていません。文字、および適合アプリケーションは、「!」<空白>文字を含む文字。 したがって、POSIX sedを使用すると、次のことができます。 sed -e '/pattern/!d' file 書くのと同じです: sed -e '/pattern/!!d' file そして!!!d、n感嘆符はまだ大丈夫です(家宝ツールチェストの 3つのsedバージョンでテスト済み)。1つの感嘆符の代わりに複数の感嘆符の間に利点はありません。 なぜ仕様がその構文を許可し、実際のアプリケーションでどのように役立つのですか? この場合、GNU sedは準拠していないようで、複数の感嘆符を使用すると文句を言います。 $ sed -e '/pattern/!!d' file sed: -e expression #1, char 11: multiple `!'s
12 sed  posix 

1
ポータブルsed -e…dbまたは!b?
では、この編集 ステファンChazelas POSIXifies (再び)私がsed挿入して書式設定-eXPRESSIONブレークと他の-eXPRESSION文を。今、私は単にコメントでなぜ彼に尋ねるかもしれませんが、その答えのリビジョン番号はすでに18であり、以前のほとんどはすでに同様の景品のおかげでした(削除されたコメントを見ることができるなら、あなたは何を知っているでしょうつまり)。また、より一般的に役立つ方法でこれを表現する理由を十分理解していると思います。だからここに期待しています... 一般的sed -eには、可能であれば合計xpressionsを1 に維持することを好みますが、特に差がa およびanに過ぎない場合は、可能な限り仕様に準拠することを優先します。しかし、なぜそうすべきか理解していない場合、これを行うことはできません。ここに私の理解の現在の状態の簡単な要約があります:<space>-e ' -e 'ブレークが移植性のためで立つことができるsedのスクリプト\nでewlineブレークsedコマンドラインステートメント... 私は理由について明らかにあいまいです sed {関数内の右中括弧の}前には、\nここに記載されているようにewlineブレークが必要です。 の<right-brace>前にa <newline>を付け、<blank>文字の前または後に指定できます。 \newlineブレークは、同様に...のいずれかの使用、次の要求されa、b、c、i、r、t、w、または:。 しかし、{関数}定義が!not演算子にどのように関係するのか明確にはわかりません。仕様の状態で否定演算子について私が見つけた唯一の言及: 関数の前に1つ以上の!文字を置くことができます。この場合、アドレスがパターンスペースを選択しない場合、関数が適用されます。 これは、aの使用!が{中括弧を意味することを意味します}か?$!コマンドは何ですか-同様に' -e 'ブレークで区切る必要がありますか?Stéphaneが最近POSIXで答えを出したとき、これは対処されたものでしたか? 私はそれが!否定演算子であるかb、彼が彼の編集で対処する牧場ステートメントであると思う-または多分一度に両方である-しかし、私は知りませんし、好きです。それが牧場の声明だけであるなら、私はその代わりにやると休憩の必要性をなくすと信じていますが、POSIX化された3 つの答えを危険にさらす前に私はむしろ確信しています。手伝ってくれますか?bd' -e ' 私は結局それを危険にさらしましたが、大きな確実性はありませんでした...
12 shell  sed  posix 

3
私のfsはmvアトミックですか?
mvfs(ext4)がアトミックかどうかを確認するにはどうすればよいですか? OSはRed Hat Enterprise Linux Serverリリース6.8です。 一般的に、これを確認するにはどうすればよいですか?私は周りを見回しましたが、私のOSが標準のPOSIXであるかどうかはわかりませんでした。
12 posix  mv  move 


2
umaskはACLにどのように影響しますか?
umaskACLがアクティブになっている場合、新しく作成されたファイルのデフォルトマスクにどのように影響するかを誰かに説明できますか?これに関するドキュメントはありますか? 例: $ mkdir test_dir && cd test_dir $ setfacl -m d:someuser:rwx -m u:someuser:rwx . # give access to some user $ getfacl . # file: . # owner: myUsername # group: myGroup user::rwx user:someuser:rwx group::--- mask::rwx other::--- default:user::rwx default:user:someuser:rwx default:group::--- default:mask::rwx default:other::--- $ umask # show my umask 077 …
12 linux  permissions  posix  acl 


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.